38 |
|
|
39 |
package gnu.CORBA.Poa; |
package gnu.CORBA.Poa; |
40 |
|
|
41 |
import gnu.CORBA.CDR.cdrBufOutput; |
import gnu.CORBA.CDR.BufferedCdrOutput; |
42 |
import gnu.CORBA.GIOP.MessageHeader; |
import gnu.CORBA.GIOP.MessageHeader; |
43 |
import gnu.CORBA.GIOP.v1_2.ReplyHeader; |
import gnu.CORBA.GIOP.v1_2.ReplyHeader; |
44 |
import gnu.CORBA.GIOP.v1_2.RequestHeader; |
import gnu.CORBA.GIOP.v1_2.RequestHeader; |
45 |
import gnu.CORBA.Interceptor.gnuClientRequestInfo; |
import gnu.CORBA.Interceptor.gnuClientRequestInfo; |
46 |
import gnu.CORBA.Interceptor.gnuServerRequestInfo; |
import gnu.CORBA.Interceptor.gnuServerRequestInfo; |
47 |
|
import gnu.CORBA.typecodes.RecordTypeCode; |
48 |
import gnu.CORBA.ObjectCreator; |
import gnu.CORBA.ObjectCreator; |
49 |
import gnu.CORBA.Unexpected; |
import gnu.CORBA.Unexpected; |
50 |
import gnu.CORBA.gnuAny; |
import gnu.CORBA.gnuAny; |
51 |
import gnu.CORBA.gnuRequest; |
import gnu.CORBA.gnuRequest; |
52 |
import gnu.CORBA.recordTypeCode; |
import gnu.CORBA.StreamHolder; |
53 |
import gnu.CORBA.streamReadyHolder; |
import gnu.CORBA.StreamBasedRequest; |
|
import gnu.CORBA.streamRequest; |
|
54 |
|
|
55 |
import org.omg.CORBA.ARG_OUT; |
import org.omg.CORBA.ARG_OUT; |
56 |
import org.omg.CORBA.Any; |
import org.omg.CORBA.Any; |
115 |
/** |
/** |
116 |
* The buffer to write into. |
* The buffer to write into. |
117 |
*/ |
*/ |
118 |
cdrBufOutput buffer; |
BufferedCdrOutput buffer; |
119 |
|
|
120 |
/** |
/** |
121 |
* The responsible POA. |
* The responsible POA. |
252 |
handler = object.getHandler(operation(), cookie, false); |
handler = object.getHandler(operation(), cookie, false); |
253 |
} |
} |
254 |
|
|
255 |
cdrBufOutput request_part = new cdrBufOutput(); |
BufferedCdrOutput request_part = new BufferedCdrOutput(); |
256 |
|
|
257 |
request_part.setOrb(orb()); |
request_part.setOrb(orb()); |
258 |
|
|
288 |
request_part.create_input_stream(); |
request_part.create_input_stream(); |
289 |
|
|
290 |
// Ensure the servant (handler) has a delegate set. |
// Ensure the servant (handler) has a delegate set. |
291 |
servantDelegate sd = null; |
ServantDelegateImpl sd = null; |
292 |
|
|
293 |
Delegate d = null; |
Delegate d = null; |
294 |
|
|
300 |
{ |
{ |
301 |
// In some cases exception is thrown if the delegate is not set. |
// In some cases exception is thrown if the delegate is not set. |
302 |
} |
} |
303 |
if (d instanceof servantDelegate) |
if (d instanceof ServantDelegateImpl) |
304 |
{ |
{ |
305 |
// If the delegate is already set, try to reuse the existing |
// If the delegate is already set, try to reuse the existing |
306 |
// instance. |
// instance. |
307 |
sd = (servantDelegate) d; |
sd = (ServantDelegateImpl) d; |
308 |
if (sd.object != object) |
if (sd.object != object) |
309 |
{ |
{ |
310 |
sd = new servantDelegate(servant, poa, Id); |
sd = new ServantDelegateImpl(servant, poa, Id); |
311 |
} |
} |
312 |
} |
} |
313 |
else |
else |
314 |
{ |
{ |
315 |
sd = new servantDelegate(servant, poa, Id); |
sd = new ServantDelegateImpl(servant, poa, Id); |
316 |
} |
} |
317 |
servant._set_delegate(sd); |
servant._set_delegate(sd); |
318 |
|
|
368 |
{ |
{ |
369 |
// Failed due any reason, insert without |
// Failed due any reason, insert without |
370 |
// helper. |
// helper. |
371 |
a.insert_Streamable(new streamReadyHolder( |
a.insert_Streamable(new StreamHolder( |
372 |
buf.create_input_stream() |
buf.create_input_stream() |
373 |
) |
) |
374 |
); |
); |
375 |
|
|
376 |
recordTypeCode r = |
RecordTypeCode r = |
377 |
new recordTypeCode(TCKind.tk_except); |
new RecordTypeCode(TCKind.tk_except); |
378 |
r.setId(uex_idl); |
r.setId(uex_idl); |
379 |
r.setName(ObjectCreator.getDefaultName(uex_idl)); |
r.setName(ObjectCreator.getDefaultName(uex_idl)); |
380 |
} |
} |
531 |
{ |
{ |
532 |
InvokeHandler handler = object.getHandler(operation(), cookie, false); |
InvokeHandler handler = object.getHandler(operation(), cookie, false); |
533 |
|
|
534 |
if (handler instanceof dynImpHandler) |
if (handler instanceof DynamicImpHandler) |
535 |
{ |
{ |
536 |
DynamicImplementation dyn = ((dynImpHandler) handler).servant; |
DynamicImplementation dyn = ((DynamicImpHandler) handler).servant; |
537 |
if (serverRequest == null) |
if (serverRequest == null) |
538 |
{ |
{ |
539 |
serverRequest = new LocalServerRequest(this); |
serverRequest = new LocalServerRequest(this); |
589 |
// Prepare an Any that will hold the exception. |
// Prepare an Any that will hold the exception. |
590 |
gnuAny exc = new gnuAny(); |
gnuAny exc = new gnuAny(); |
591 |
|
|
592 |
exc.insert_Streamable(new streamReadyHolder(input)); |
exc.insert_Streamable(new StreamHolder(input)); |
593 |
|
|
594 |
UnknownUserException unuex = new UnknownUserException(exc); |
UnknownUserException unuex = new UnknownUserException(exc); |
595 |
m_environment.exception(unuex); |
m_environment.exception(unuex); |
637 |
* |
* |
638 |
* @return the CDR output stream, containing the written output. |
* @return the CDR output stream, containing the written output. |
639 |
*/ |
*/ |
640 |
cdrBufOutput getBuffer() |
BufferedCdrOutput getBuffer() |
641 |
{ |
{ |
642 |
return buffer; |
return buffer; |
643 |
} |
} |
656 |
*/ |
*/ |
657 |
private void prepareStream() |
private void prepareStream() |
658 |
{ |
{ |
659 |
buffer = new cdrBufOutput(); |
buffer = new BufferedCdrOutput(); |
660 |
buffer.setOrb(orb()); |
buffer.setOrb(orb()); |
661 |
} |
} |
662 |
|
|
664 |
* Get the parameter stream, where the invocation arguments should be written |
* Get the parameter stream, where the invocation arguments should be written |
665 |
* if they are written into the stream directly. |
* if they are written into the stream directly. |
666 |
*/ |
*/ |
667 |
public streamRequest getParameterStream() |
public StreamBasedRequest getParameterStream() |
668 |
{ |
{ |
669 |
m_parameter_buffer = new streamRequest(); |
m_parameter_buffer = new StreamBasedRequest(); |
670 |
m_parameter_buffer.request = this; |
m_parameter_buffer.request = this; |
671 |
m_parameter_buffer.setOrb(poa.orb()); |
m_parameter_buffer.setOrb(poa.orb()); |
672 |
return m_parameter_buffer; |
return m_parameter_buffer; |