|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.acplt.oncrpc.server.OncRpcServerTransport org.acplt.oncrpc.server.OncRpcTcpConnectionServerTransport
public class OncRpcTcpConnectionServerTransport
Instances of class OncRpcTcpServerTransport
encapsulate
TCP/IP-based XDR streams of ONC/RPC servers. This server transport class
is responsible for receiving ONC/RPC calls over TCP/IP.
OncRpcServerTransport
,
OncRpcTcpServerTransport
,
OncRpcUdpServerTransport
Field Summary | |
---|---|
private OncRpcTcpServerTransport |
parent
Reference to the TCP/IP transport which created us to handle a new ONC/RPC connection. |
private boolean |
pendingDecoding
Indicates that BeginDecoding has been called for the
receiving XDR stream, so that it should be closed later using
EndDecoding . |
private boolean |
pendingEncoding
Indicates that BeginEncoding has been called for the
sending XDR stream, so in face of exceptions we can not send an
error reply to the client but only drop the connection. |
private XdrTcpDecodingStream |
receivingXdr
XDR decoding stream used when receiving requests via TCP/IP from ONC/RPC clients. |
private XdrTcpEncodingStream |
sendingXdr
XDR encoding stream used for sending replies via TCP/IP back to an ONC/RPC client. |
private java.net.Socket |
socket
TCP socket used for stream-based communication with ONC/RPC clients. |
private OncRpcTcpSocketHelper |
socketHelper
Socket helper object supplying missing methods for JDK 1.1 backwards compatibility. |
protected int |
transmissionTimeout
Timeout during the phase where data is received within calls, or data is sent within replies. |
Fields inherited from class org.acplt.oncrpc.server.OncRpcServerTransport |
---|
dispatcher, info, port |
Constructor Summary | |
---|---|
OncRpcTcpConnectionServerTransport(OncRpcDispatchable dispatcher,
java.net.Socket socket,
int program,
int version,
int bufferSize,
OncRpcTcpServerTransport parent,
int transmissionTimeout)
Create a new instance of a OncRpcTcpSConnectionerverTransport
which encapsulates TCP/IP-based XDR streams of an ONC/RPC server. |
|
OncRpcTcpConnectionServerTransport(OncRpcDispatchable dispatcher,
java.net.Socket socket,
OncRpcServerTransportRegistrationInfo[] info,
int bufferSize,
OncRpcTcpServerTransport parent,
int transmissionTimeout)
Create a new instance of a OncRpcTcpSConnectionerverTransport
which encapsulates TCP/IP-based XDR streams of an ONC/RPC server. |
Method Summary | |
---|---|
private void |
_listen()
The real workhorse handling incoming requests, dispatching them and sending back replies. |
protected void |
beginEncoding(OncRpcCallInformation callInfo,
OncRpcServerReplyMessage state)
Begins the sending phase for ONC/RPC replies. |
void |
close()
Close the server transport and free any resources associated with it. |
protected void |
endDecoding()
Finishes call parameter deserialization. |
protected void |
endEncoding()
Finishes encoding the reply to this ONC/RPC call. |
protected void |
finalize()
Finalize object by making sure that we're removed from the list of open transports which our parent transport maintains. |
java.lang.String |
getCharacterEncoding()
Get the character encoding for (de-)serializing strings. |
protected XdrDecodingStream |
getXdrDecodingStream()
Returns XDR stream which can be used for deserializing the parameters of this ONC/RPC call. |
protected XdrEncodingStream |
getXdrEncodingStream()
Returns XDR stream which can be used for eserializing the reply to this ONC/RPC call. |
void |
listen()
Creates a new thread and uses this thread to handle the new connection to receive ONC/RPC requests, then dispatching them and finally sending back reply messages. |
void |
register()
Do not call. |
protected void |
reply(OncRpcCallInformation callInfo,
OncRpcServerReplyMessage state,
XdrAble reply)
Send back an ONC/RPC reply to the original caller. |
void |
retrieveCall(XdrAble call)
Retrieves the parameters sent within an ONC/RPC call message. |
void |
setCharacterEncoding(java.lang.String characterEncoding)
Set the character encoding for (de-)serializing strings. |
Methods inherited from class org.acplt.oncrpc.server.OncRpcServerTransport |
---|
getPort, unregister |
Methods inherited from class java.lang.Object |
---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private java.net.Socket socket
private OncRpcTcpSocketHelper socketHelper
private XdrTcpEncodingStream sendingXdr
private XdrTcpDecodingStream receivingXdr
private boolean pendingDecoding
BeginDecoding
has been called for the
receiving XDR stream, so that it should be closed later using
EndDecoding
.
private boolean pendingEncoding
BeginEncoding
has been called for the
sending XDR stream, so in face of exceptions we can not send an
error reply to the client but only drop the connection.
private OncRpcTcpServerTransport parent
protected int transmissionTimeout
Constructor Detail |
---|
public OncRpcTcpConnectionServerTransport(OncRpcDispatchable dispatcher, java.net.Socket socket, int program, int version, int bufferSize, OncRpcTcpServerTransport parent, int transmissionTimeout) throws OncRpcException, java.io.IOException
OncRpcTcpSConnectionerverTransport
which encapsulates TCP/IP-based XDR streams of an ONC/RPC server. This
particular server transport handles individual ONC/RPC connections over
TCP/IP. This constructor is a convenience constructor for those transports
handling only a single ONC/RPC program and version number.
dispatcher
- Reference to interface of an object capable of
dispatching (handling) ONC/RPC calls.socket
- TCP/IP-based socket of new connection.program
- Number of ONC/RPC program handled by this server
transport.version
- Version number of ONC/RPC program handled.bufferSize
- Size of buffer used when receiving and sending
chunks of XDR fragments over TCP/IP. The fragments built up to
form ONC/RPC call and reply messages.parent
- Parent server transport which created us.transmissionTimeout
- Inherited transmission timeout.
OncRpcException
java.io.IOException
public OncRpcTcpConnectionServerTransport(OncRpcDispatchable dispatcher, java.net.Socket socket, OncRpcServerTransportRegistrationInfo[] info, int bufferSize, OncRpcTcpServerTransport parent, int transmissionTimeout) throws OncRpcException, java.io.IOException
OncRpcTcpSConnectionerverTransport
which encapsulates TCP/IP-based XDR streams of an ONC/RPC server. This
particular server transport handles individual ONC/RPC connections over
TCP/IP.
dispatcher
- Reference to interface of an object capable of
dispatching (handling) ONC/RPC calls.socket
- TCP/IP-based socket of new connection.info
- Array of program and version number tuples of the ONC/RPC
programs and versions handled by this transport.bufferSize
- Size of buffer used when receiving and sending
chunks of XDR fragments over TCP/IP. The fragments built up to
form ONC/RPC call and reply messages.parent
- Parent server transport which created us.transmissionTimeout
- Inherited transmission timeout.
OncRpcException
java.io.IOException
Method Detail |
---|
public void close()
Note that the server transport is not deregistered. You'll have to do it manually if you need to do so. The reason for this behaviour is, that the portmapper removes all entries regardless of the protocol (TCP/IP or UDP/IP) for a given ONC/RPC program number and version.
Calling this method on a OncRpcTcpServerTransport
results in the listening TCP network socket immediately being closed.
The handler thread will therefore either terminate directly or when
it tries to sent back replies.
close
in class OncRpcServerTransport
protected void finalize()
finalize
in class java.lang.Object
public void register() throws OncRpcException
register
in class OncRpcServerTransport
java.lang.Error
- because this method must not be called for an
individual TCP/IP-based server transport.
OncRpcException
- if the portmapper could not be contacted
successfully.public void retrieveCall(XdrAble call) throws OncRpcException, java.io.IOException
XdrDecodingStream.endDecoding()
to free any
pending resources from the decoding stage.
retrieveCall
in class OncRpcServerTransport
OncRpcException
- if an ONC/RPC exception occurs, like the data
could not be successfully deserialized.
java.io.IOException
- if an I/O exception occurs, like transmission
failures over the network, etc.protected XdrDecodingStream getXdrDecodingStream()
getXdrDecodingStream
in class OncRpcServerTransport
protected void endDecoding() throws OncRpcException, java.io.IOException
getXdrDecodingStream()
must not be used any more.
This method belongs to the lower-level access pattern when handling
ONC/RPC calls.
endDecoding
in class OncRpcServerTransport
OncRpcException
- if an ONC/RPC exception occurs, like the data
could not be successfully deserialized.
java.io.IOException
- if an I/O exception occurs, like transmission
failures over the network, etc.protected XdrEncodingStream getXdrEncodingStream()
getXdrEncodingStream
in class OncRpcServerTransport
protected void beginEncoding(OncRpcCallInformation callInfo, OncRpcServerReplyMessage state) throws OncRpcException, java.io.IOException
beginEncoding
in class OncRpcServerTransport
callInfo
- Information about ONC/RPC call for which we are about
to send back the reply.state
- ONC/RPC reply header indicating success or failure.
OncRpcException
- if an ONC/RPC exception occurs, like the data
could not be successfully serialized.
java.io.IOException
- if an I/O exception occurs, like transmissionprotected void endEncoding() throws OncRpcException, java.io.IOException
getXdrEncodingStream()
any
longer.
endEncoding
in class OncRpcServerTransport
OncRpcException
- if an ONC/RPC exception occurs, like the data
could not be successfully serialized.
java.io.IOException
- if an I/O exception occurs, like transmission
failures over the network, etc.protected void reply(OncRpcCallInformation callInfo, OncRpcServerReplyMessage state, XdrAble reply) throws OncRpcException, java.io.IOException
OncRpcCallInformation.reply(XdrAble)
method instead on the
call object supplied to the handler.
reply
in class OncRpcServerTransport
callInfo
- information about the original call, which are necessary
to send back the reply to the appropriate caller.state
- ONC/RPC reply message header indicating success or failure
and containing associated state information.reply
- If not null
, then this parameter references
the reply to be serialized after the reply message header.
OncRpcException
- if an ONC/RPC exception occurs, like the data
could not be successfully serialized.
java.io.IOException
- if an I/O exception occurs, like transmission
failures over the network, etc.OncRpcCallInformation
,
OncRpcDispatchable
public void listen()
Currently only one call after the other is dispatched, so no multithreading is done when receiving multiple calls. Instead, later calls have to wait for the current call to finish before they are handled.
listen
in class OncRpcServerTransport
private void _listen()
public void setCharacterEncoding(java.lang.String characterEncoding)
setCharacterEncoding
in class OncRpcServerTransport
characterEncoding
- the encoding to use for (de-)serializing strings.
If null
, the system's default encoding is to be used.public java.lang.String getCharacterEncoding()
getCharacterEncoding
in class OncRpcServerTransport
null
, then the system's default encoding is used.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |