RpcPeer - support bi-directional RPC between two services


SYNOPSIS

       #include <Dispatch/rpcpeer.h>


DESCRIPTION

       An  RpcPeer  (actually,  an  instance  of a derived class)
       tries to open a connection to  another  RpcPeer.   If  the
       other  RpcPeer is not yet running, the RpcPeer will create
       its own port and wait for the other RpcPeer to open a con-
       nection.   When  either  RpcPeer  opens a connection, each
       RpcPeer will create both a reader and  a  writer  so  each
       RpcPeer  can  send  RPC  requests to its opposite over the
       same connection.


CONSTRUCTOR

       RpcPeer(const char* lPath, int lPort = 0)
              Store the arguments for later use since a base con-
              structor can't call a derived class's virtual func-
              tion.  The derived class's constructor should  call
              ``init'', described below.

       void init(const char* rPath)
              Find  the  host  name and port number registered by
              the other RpcPeer and try to open a  connection  to
              it.   If  it's not running, create our own port and
              wait for the other RpcPeer to open a connection.


PUBLIC OPERATIONS

       void run()
       void quitRunning()
              Read RPC  requests  continuously  until  ``quitRun-
              ning()''  terminates  the  loop.   If  you're using
              InterViews, you don't have to call ``run()''  since
              the  InterViews  event-reading  code will also read
              RPC requests.


PROTECTED OPERATIONS

       virtual  boolean  createReaderAndWriter(const  char*
              rHost,  int rPort) = 0
       virtual void createReaderAndWriter(int fd) = 0
              You must define both functions in a  derived  class
              in  order to start reading and writing RPC requests
              over  the  connection.   Typically  both  functions
              would  create  a  writer using the given parameters
              and then attach a reader to the writer's rpcstream.


SEE ALSO

       Dispatcher(3I),       RpcReader(3I),      RpcRegistry(3I),
       RpcWriter(3I)



Man(1) output converted with man2html