home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume26 / mnl-rpc++-2.3.1 / part01 / example / client.cc < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-24  |  1.6 KB  |  65 lines

  1. // -*- c++ -*-
  2. static char _client_cc_[]
  3. = "client.cc,v 2.3 1992/06/15 19:13:17 mnl Exp";
  4.  
  5. // client.cc,v
  6. // Revision 2.3  1992/06/15  19:13:17  mnl
  7. // Fixed a few bugs, clarified interface.
  8. //
  9. // Revision 2.2  1992/06/13  14:27:32  mnl
  10. // Adapted to (patched) gcc-2.2. Fixed several bugs.
  11. //
  12. // Revision 2.1.1.1  1992/03/08  13:28:45  mnl
  13. // Initial mnl version.
  14. //
  15.  
  16. #include <stream.h>
  17. #include "rpc++/stub.h"
  18.  
  19. #include "calcsvc.h"
  20.  
  21. class CalcStub : public RpcStub
  22. {
  23. public:
  24.   inline CalcStub (u_long prognum, u_long versnum,
  25.            char* hostname = "localhost",
  26.            timeval timeout = defaultTimeout, bool connect = TRUE)
  27.     : RpcStub (prognum, versnum, hostname, timeout, connect) {}
  28.  
  29.   inline void Reset ()
  30.     { Call (CalcRequests::Reset); }
  31.   inline int Inc (int i)
  32.     { return *(int*)Call (CalcRequests::Inc, &i); }
  33.   inline char* IToA (int i)
  34.     { return *(char**)Call (CalcRequests::IToA, &i); }
  35.   inline int Add (int s1, int s2)
  36.     { return *(int*)Call (CalcRequests::Add, &s1, &s2); }
  37.  
  38.   inline void Msg (char* msg)
  39.     { Call (CalcRequests::Msg, &msg); }
  40.   inline void Sleep (int secs)
  41.     { Call (CalcRequests::Sleep, &secs); }
  42. };
  43.  
  44. main (int argc, char* argv[])
  45. {
  46.   char* server = argv[1];
  47.  
  48.   CalcStub svc (CALCSVC, 1, server);
  49.   svc.Reset ();
  50.   svc.Msg ("Hello server.\n");
  51.   int i = 0, o;
  52.   while (i < 10)
  53.     {
  54.       o = svc.Inc (i);
  55.       cout << svc.IToA (o) << '\n';
  56.       i = o;
  57.     }
  58.   i = svc.Add (12, 23);
  59.   cout << "add (" << 12 << ", " << 23 << ") = " << i << endl;
  60.   cout << "Calling Sleep (5) asynchronously.\n";
  61.   svc.Sleep (5);
  62.   cout << "Sleep call completed.\n";
  63.   svc.Call (CalcRequests::Invalid);
  64. }
  65.