|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.acplt.oncrpc.server.OncRpcServerTransport
org.acplt.oncrpc.server.OncRpcUdpServerTransport
public class OncRpcUdpServerTransport
Instances of class OncRpcUdpServerTransport
encapsulate
UDP/IP-based XDR streams of ONC/RPC servers. This server transport class
is responsible for receiving ONC/RPC calls over UDP/IP.
OncRpcServerTransport
,
OncRpcTcpServerTransport
Field Summary | |
---|---|
private boolean |
pendingDecoding
Indicates that BeginDecoding has been called for the
receiving XDR stream, so that it should be closed later using
EndDecoding . |
private XdrUdpDecodingStream |
receivingXdr
XDR decoding stream used when receiving requests via UDP/IP from ONC/RPC clients. |
private XdrUdpEncodingStream |
sendingXdr
XDR encoding stream used for sending replies via UDP/IP back to an ONC/RPC client. |
private java.net.DatagramSocket |
socket
UDP socket used for datagram-based communication with ONC/RPC clients. |
private OncRpcUdpSocketHelper |
socketHelper
Socket helper object supplying missing methods for JDK 1.1 backwards compatibility. |
Fields inherited from class org.acplt.oncrpc.server.OncRpcServerTransport |
---|
dispatcher, info, port |
Constructor Summary | |
---|---|
OncRpcUdpServerTransport(OncRpcDispatchable dispatcher,
java.net.InetAddress bindAddr,
int port,
OncRpcServerTransportRegistrationInfo[] info,
int bufferSize)
Create a new instance of a OncRpcUdpServerTransport which
encapsulates UDP/IP-based XDR streams of an ONC/RPC server. |
|
OncRpcUdpServerTransport(OncRpcDispatchable dispatcher,
int port,
int program,
int version,
int bufferSize)
Create a new instance of a OncRpcUdpServerTransport which
encapsulates UDP/IP-based XDR streams of an ONC/RPC server. |
|
OncRpcUdpServerTransport(OncRpcDispatchable dispatcher,
int port,
OncRpcServerTransportRegistrationInfo[] info,
int bufferSize)
Create a new instance of a OncRpcUdpServerTransport which
encapsulates UDP/IP-based XDR streams of an ONC/RPC server. |
Method Summary | |
---|---|
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. |
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 listen to incoming ONC/RPC requests, then dispatches them and finally sends back the appropriate reply messages. |
void |
register()
Register the UDP/IP port where this server transport waits for incoming requests with the ONC/RPC portmapper. |
protected void |
reply(OncRpcCallInformation callInfo,
OncRpcServerReplyMessage state,
XdrAble reply)
Send back an ONC/RPC reply to the original caller. |
protected 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, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private java.net.DatagramSocket socket
private OncRpcUdpSocketHelper socketHelper
private XdrUdpEncodingStream sendingXdr
private XdrUdpDecodingStream receivingXdr
private boolean pendingDecoding
BeginDecoding
has been called for the
receiving XDR stream, so that it should be closed later using
EndDecoding
.
Constructor Detail |
---|
public OncRpcUdpServerTransport(OncRpcDispatchable dispatcher, int port, int program, int version, int bufferSize) throws OncRpcException, java.io.IOException
OncRpcUdpServerTransport
which
encapsulates UDP/IP-based XDR streams of an ONC/RPC server. Using a
server transport, ONC/RPC calls are received and the corresponding
replies are sent back.
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.port
- Number of port where the server will wait for incoming
calls.program
- Number of ONC/RPC program handled by this server
transport.version
- Version number of ONC/RPC program handled.bufferSize
- Size of buffer for receiving and sending UDP/IP
datagrams containing ONC/RPC call and reply messages.
OncRpcException
java.io.IOException
public OncRpcUdpServerTransport(OncRpcDispatchable dispatcher, int port, OncRpcServerTransportRegistrationInfo[] info, int bufferSize) throws OncRpcException, java.io.IOException
OncRpcUdpServerTransport
which
encapsulates UDP/IP-based XDR streams of an ONC/RPC server. Using a
server transport, ONC/RPC calls are received and the corresponding
replies are sent back.
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.port
- Number of port where the server will wait for incoming
calls.info
- Array of program and version number tuples of the ONC/RPC
programs and versions handled by this transport.bufferSize
- Size of buffer for receiving and sending UDP/IP
datagrams containing ONC/RPC call and reply messages.
OncRpcException
java.io.IOException
public OncRpcUdpServerTransport(OncRpcDispatchable dispatcher, java.net.InetAddress bindAddr, int port, OncRpcServerTransportRegistrationInfo[] info, int bufferSize) throws OncRpcException, java.io.IOException
OncRpcUdpServerTransport
which
encapsulates UDP/IP-based XDR streams of an ONC/RPC server. Using a
server transport, ONC/RPC calls are received and the corresponding
replies are sent back.
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.bindAddr
- The local Internet Address the server will bind to.port
- Number of port where the server will wait for incoming
calls.info
- Array of program and version number tuples of the ONC/RPC
programs and versions handled by this transport.bufferSize
- Size of buffer for receiving and sending UDP/IP
datagrams containing ONC/RPC call and reply messages.
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 OncRpcUdpServerTransport
results in the UDP network socket immediately being closed. The
handler thread will therefore either terminate directly or when it
tries to sent back a reply which it was about to handle at the time
the close method was called.
close
in class OncRpcServerTransport
public void register() throws OncRpcException
register
in class OncRpcServerTransport
OncRpcException
- if the portmapper could not be contacted
successfully.protected 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
public 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 All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |