CVS info: $Revision: 1.1.1.1 $ $Date: 2001/11/02 01:55:30 $ $State: Exp $ $Locker: $
Change Log
Version 0.92.1:
jrpcgen
now emits a second constructor expecting the port
number to bind transports to as its solely parameter. This allows server
writers to bind their servers to well-known ports.
jportmap
and an embedded portmap service class.
It can be used by standalone applications which should also be useable if the
user has not installed a portmap service.
I must have been bored or insane. Or both.
OncRpcServerStub
methods public (instead of
protected), to give derived server classes more control over the way they
spin up and down.
Version 0.91.2:
OncRpcTcpSocket
. So
much for almost not testing the release. To fix this stupid design bug the
classes OncRpcTcpSocket
and OncRpcUdpSocket
were
moved to OncRpcTcpSocketHelper
and
OncRpcUdpSocketHelper
. They now merely support Socket
and DatagramSocket
instead of inheriting from them. This avoids
the endless reflection method invocation loop, but is still cheaper in terms
of method invocation performance than a wrapper class.
Version 0.91.1:
AUTH_NONE
on the server
side in OncRpcServerAuth.xdrNew
when recycling the
AUTH_NONE
handler singleton.
jrpcgen
generated server stubs. The constructor of a server stub class now only
creates the transport objects and sets the public transports
field
within class OncRpcServerStub
. Registering with the portmapper as
well as dispatching calls is now done within the run()
method
(note: without any parameters). You need to change your code accordingly by
inserting a call to run()
, otherwise the server will not start.
MyServer myserver = new MyServer(); myserver.run();
java
",
some files were moved. The JBuilder project files have been moved to the
projects/
subdirectory.
demo.x
example now tests some pathological cases.
addElement
instead of add
when adding objects to a
Vector
.
readme-first/
which should be more obvious to first-time users of
the RemoteTea source code and does not clobber the projects/
directory any more.
NullPointerException
in OncRpcTcpClient
and OncRpcUdpClient
when checking for rejected credentials
-- and I thought Java had no pointers.
jrpcgen
: support for short form unsigned
in addition to unsigned int
(compatibility with
rpcgen
). Handling of octal numbers added (okay, it is still a valid
number format). Fixed bug in the code generation of desciminated unions using
booleans. Support for more than one program definition within the same x-file.
In this case the source code files generated for the client and server stubs
are named <x-filename><program-id>Client.java
and
<x-filename><program-id>Server.java
, respectively.
org.acplt.oncrpc.web
containing helper
classes for HTTP client connections (HttpClientConnection
), and
base64 encoding and decoding (Base64
), as well as some other
stuff.
OncRpcHttpClient
, which stands in the
tradition of OncRpcClient
and implements sending ONC/RPC calls
through HTTP tunnels. Also added XdrHttpDecodingStream
, which can
pull base64 encoded data from a web server and provide the decoded data through
the usual decoding XDR stream interface.
Version 0.90.1:
XdrEncodingStream.xdrEncodeByteFixedVector()
which
falsely encoded length information about the following array of characters.
I should take more care when doing "Italian code recycling" using copy &
pasta...
OncRpcTcpClient.call()
which caused XDR
buffer underflows when receiving the next reply after the previous reply
has been rejected by an ONC/RPC server.
org.acplt.oncrpc
to put it
in sync with (de-) serializing fixed-size vectors and dynamic and fixed vectors
of characters.
AUTH_UNIX
authentication. For this to achieve quite
some additions and changes were necessary -- luckily, old applications will
not be broken, as the changes are deep within the RemoteTea package:
OncRpcClientAuth
, OncRpcClientAuthNone
and
OncRpcClientAuthUnix
were added.
OncRpcReplyMessage
and OncRpcCallMessage
are now
both abstract. This was necessary because ONC/RPC protocol issues make it
necessary to handle authentication through so-called authentication protocol
handling objects different on the client side than on the server side.
Additional classes now handle sending calls and receiving replies on the
client side (OncRpcClientCallMessage
and
OncRpcClientReplyMessage
respectively), as well as on the
server side (OncRpcServerCallMessage
and
OncRpcServerReplyMessage
). According to their needs, these new
classes only declare those encoding and decoding methods which are really
needed. In consequence, the base class OncRpcCallMessage
has lost
its XdrAble
interface completely.
OncRpcUdpClient
and OncRpcTcpClient
, as well as
to the base class OncRpcClient
.
callMessage.auth
attribute of the OncRpcCallInformation
delivered with each incomming ONC/RPC call. See
tests.org.acplt.oncrpc.ServerTest.java
for an example.
AUTH_DES
is still not supported, as this needs
quite some things to be done and I don't have full information about the
AUTH_DES
protocol.
XdrBufferEncodingStream
and
XdrBufferDecodingStream
for encoding and decoding XDR data from
and to a fixed-size buffer. These classes comes in handy when dealing with
shorthand credentials.
XdrDynamicOpaque
to handle variable-sized
vectors of bytes.
org.acplt.oncrpc.apps.jrpcgen
,
because it's an application belonging very tight to ONC/RPC.
OncRpcConstants.REMOTETEA_VERSION_PREVERSION
,
which indicates preversions if not zero.
Version 0.86.1:
char<>
as a series of
characters, each one sitting happily in its very own XDR int (that is,
four bytes), the two methods XdrDecodingStream.xdrDecodeBytes()
and XdrEncodingStream.xdrEncodeBytes()
were renamed to
XdrDecodingStream.xdrDecodeByteVector()
and XdrEncodingStream.xdrEncodeByteVector()
as well as their
semantics changed accordingly.
XdrDecodingStream.xdrDecodeDynamicOpaque()
,
XdrEncodingStream.xdrEncodeDynamicOpaque()
,
XdrDecodingStream.xdrDecodeByteFixedVector()
and
XdrEncodingStream.xdrEncodeByteFixedVector()
.
XdrDecodingStream
and XdrEncodingStream
finally final
. Maybe this helps Java compilers improve code
speed. Maybe.
XdrDecodingStream
and XdrEncodingStream
.
Version 0.85.1:
readBuffer()
to class
XdrTcpDecodingStream
. This fixes problems when reading from
a TCP/IP stream and not all bytes wanted are immediately available, thus
stream.read()
returning not all bytes at once (shame on me
for not reading the java.io documentation attentive enough).
Version 0.84.1:
Version 0.83.1:
Version 0.82.1:
Version 0.81.1:
broadcastCall
of method in class OncRpcUdpClient
.
jrpcgen
. Sun's documentation on the rpcgen
syntax and grammar is rather thin and sometimes inaccurate. As always, I had to resort
to RTSL ("Read The Source, Luke!") to find out what syntax and grammar rpcgen
does in fact use. Please give it a try and report problems. Note that there
is no preprocessor step.
Version 0.80.2:
Version 0.80.1:
Version 0.35.1 and before: