ProtoPort is a client-server software product for Windows which enables independently
developed I/O servers to transparently share a single communications port in a fair,
efficient manner. Consisting of an executable and a dynamic link library (DLL),
this software enables port sharing via the Remote Procedure Call (RPC) mechanism.
Essentially, ProtoPort is a 32-bit server which arbitrates port usage among clients
that request services via the RPC mechanism. The difficulties in implementing
an RPC client are abstracted by the DLL, which provides a set of library functions
which closely resemble the standard communications functions in the Windows API.
The following is a list of advantages to be gained by using ProtoPort for multi-protocol
communication over a single channel:
- Simple programming interface is nearly identical to standard Windows interface.
- Sharing is accomplished without continually opening and closing the actual physical
port, which are relatively slow operations.
- There is no need to fine tune any sharing parameters, since fair sharing is automatic
and guaranteed.
- Applications waiting on the port do not waste ANY processor cycles.
- When only one client application is using ProtoPort, performance is nearly identical
to that which would be attained by monopolizing the port using the standard function
calls; i.e., there are no artificial waiting periods to share the port with other
drivers that might not even be running.
- Because of its reliance on RPC, ProtoPort facilitates the sharing of ports on remote
machines. For example, a driver running on Machine A and a driver running
on Machine B can easily share a port on Machine C.
- Automatic crash detection ensures that a problem in one client application will
not affect other clients.
- By writing drivers which utilize the ProtoPort interface, a developer is assured
that the resulting program will share a port with any other drivers written to the
ProtoPort interface. This assumes that the protocols used by the drivers are
capable of coexisting on one channel. The developer does not need to know
anything about the other drivers which will be sharing the port.
- ProtoPort supports dispatching unsolicited bytes, or cryout messages, to any threads
registered with the server for cryout services.
- ProtoPort enables hot fail-over capability at the I/O server level.