summaryrefslogtreecommitdiff
path: root/src/java.corba/share/classes/com/sun/corba/se/impl/encoding/BufferManagerReadGrow.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java.corba/share/classes/com/sun/corba/se/impl/encoding/BufferManagerReadGrow.java')
-rw-r--r--src/java.corba/share/classes/com/sun/corba/se/impl/encoding/BufferManagerReadGrow.java99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/java.corba/share/classes/com/sun/corba/se/impl/encoding/BufferManagerReadGrow.java b/src/java.corba/share/classes/com/sun/corba/se/impl/encoding/BufferManagerReadGrow.java
new file mode 100644
index 0000000..1e827fa
--- /dev/null
+++ b/src/java.corba/share/classes/com/sun/corba/se/impl/encoding/BufferManagerReadGrow.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.corba.se.impl.encoding;
+
+import java.nio.ByteBuffer;
+import com.sun.corba.se.spi.orb.ORB;
+import com.sun.corba.se.spi.logging.CORBALogDomains;
+import com.sun.corba.se.impl.protocol.giopmsgheaders.FragmentMessage;
+import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
+import com.sun.corba.se.impl.logging.ORBUtilSystemException;
+
+public class BufferManagerReadGrow
+ implements BufferManagerRead, MarkAndResetHandler
+{
+ // REVISIT - This should go in an abstract class called
+ // BufferManagerReadBase which should implement
+ // BufferManagerRead. Then, this class should extend
+ // BufferManagerReadBase.
+ private ORB orb ;
+
+ private ORBUtilSystemException wrapper ;
+
+ BufferManagerReadGrow( ORB orb )
+ {
+ this.orb = orb ;
+ this.wrapper = ORBUtilSystemException.get( orb,
+ CORBALogDomains.RPC_ENCODING ) ;
+ }
+
+ public void processFragment (ByteBuffer byteBuffer, FragmentMessage header)
+ {
+ // REVISIT - should we consider throwing an exception similar to what's
+ // done for underflow()???
+ }
+
+ public void init(Message msg) {}
+
+ public ByteBufferWithInfo underflow (ByteBufferWithInfo bbwi)
+ {
+ throw wrapper.unexpectedEof() ;
+ }
+
+ public void cancelProcessing(int requestId) {}
+
+ // Mark and reset handler -------------------------
+
+ private Object streamMemento;
+ private RestorableInputStream inputStream;
+ private boolean markEngaged = false;
+
+ public MarkAndResetHandler getMarkAndResetHandler() {
+ return this;
+ }
+
+ public void mark(RestorableInputStream is) {
+ markEngaged = true;
+ inputStream = is;
+ streamMemento = inputStream.createStreamMemento();
+ }
+
+ // This will never happen
+ public void fragmentationOccured(ByteBufferWithInfo newFragment) {}
+
+ public void reset() {
+
+ if (!markEngaged)
+ return;
+
+ markEngaged = false;
+ inputStream.restoreInternalState(streamMemento);
+ streamMemento = null;
+ }
+
+ // Nothing to close and cleanup.
+ public void close(ByteBufferWithInfo bbwi) {}
+}