28 |
28 |
29 import com.sun.corba.se.impl.orbutil.ORBConstants; |
29 import com.sun.corba.se.impl.orbutil.ORBConstants; |
30 import com.sun.corba.se.impl.protocol.giopmsgheaders.Message; |
30 import com.sun.corba.se.impl.protocol.giopmsgheaders.Message; |
31 import com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase; |
31 import com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase; |
32 import com.sun.corba.se.impl.protocol.giopmsgheaders.FragmentMessage; |
32 import com.sun.corba.se.impl.protocol.giopmsgheaders.FragmentMessage; |
|
33 import com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage; |
33 import com.sun.corba.se.impl.encoding.BufferManagerWrite; |
34 import com.sun.corba.se.impl.encoding.BufferManagerWrite; |
34 import com.sun.corba.se.impl.encoding.ByteBufferWithInfo; |
35 import com.sun.corba.se.impl.encoding.ByteBufferWithInfo; |
35 import com.sun.corba.se.impl.encoding.CDROutputObject; |
36 import com.sun.corba.se.impl.encoding.CDROutputObject; |
36 import com.sun.corba.se.spi.orb.ORB; |
37 import com.sun.corba.se.spi.orb.ORB; |
37 import com.sun.corba.se.pept.transport.Connection; |
38 import com.sun.corba.se.pept.transport.Connection; |
38 import com.sun.corba.se.pept.encoding.OutputObject; |
39 import com.sun.corba.se.pept.encoding.OutputObject; |
|
40 import org.omg.CORBA.SystemException; |
39 |
41 |
40 /** |
42 /** |
41 * Streaming buffer manager. |
43 * Streaming buffer manager. |
42 */ |
44 */ |
43 public class BufferManagerWriteStream extends BufferManagerWrite |
45 public class BufferManagerWriteStream extends BufferManagerWrite |
64 public void overflow (ByteBufferWithInfo bbwi) |
66 public void overflow (ByteBufferWithInfo bbwi) |
65 { |
67 { |
66 // Set the fragment's moreFragments field to true |
68 // Set the fragment's moreFragments field to true |
67 MessageBase.setFlag(bbwi.byteBuffer, Message.MORE_FRAGMENTS_BIT); |
69 MessageBase.setFlag(bbwi.byteBuffer, Message.MORE_FRAGMENTS_BIT); |
68 |
70 |
69 sendFragment(false); |
71 try { |
|
72 sendFragment(false); |
|
73 } catch(SystemException se){ |
|
74 orb.getPIHandler().invokeClientPIEndingPoint( |
|
75 ReplyMessage.SYSTEM_EXCEPTION, se); |
|
76 throw se; |
|
77 } |
70 |
78 |
71 // Reuse the old buffer |
79 // Reuse the old buffer |
72 |
80 |
73 // REVISIT - need to account for case when needed > available |
81 // REVISIT - need to account for case when needed > available |
74 // even after fragmenting. This is the large array case, so |
82 // even after fragmenting. This is the large array case, so |