RpcEventHandler.h
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* RpcEventHandler */
  2. /* Copyright (c) 1999 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01l,03aug01,dbs  remove usage of Thread class
  7. 01k,26jun00,dbs  implement presentation context IDs
  8. 01j,30jul99,aim  added thread pooling
  9. 01i,09jul99,dbs  use new filenames
  10. 01h,07jul99,aim  added ostream operator<<
  11. 01g,28jun99,dbs  add channelId() method
  12. 01f,24jun99,dbs  add authn checking
  13. 01e,24jun99,dbs  move authn into new class
  14. 01d,18jun99,aim  set data rep on outgoing packets
  15. 01c,08jun99,aim  rework
  16. 01b,08jun99,aim  now uses NRpcPdu
  17. 01a,27may99,aim  created
  18. */
  19. #ifndef __INCRpcEventHandler_h
  20. #define __INCRpcEventHandler_h
  21. #include "SvcHandler.h"
  22. #include "SockStream.h"
  23. #include "RpcPdu.h"
  24. #include "ntlmssp.h"
  25. #include <iostream>
  26. class Reactor;
  27. class RpcDispatcher;
  28. class ThreadPool;
  29. class RpcIfServer;
  30. class RpcEventHandler : public SvcHandler<SockStream>
  31.     {
  32.   public:
  33.     typedef SvcHandler<SockStream> super;
  34.     virtual ~RpcEventHandler ();
  35.     RpcEventHandler (Reactor* r);
  36.     RpcEventHandler
  37. (
  38. Reactor* reactor,
  39. RpcDispatcher* dispatcher
  40. );
  41.     virtual int handleInput (REACTOR_HANDLE);
  42.     virtual int open (void* = 0);
  43.     virtual int close (u_long flags = 0);
  44.     int channelId () const;
  45.     RpcIfServer* acceptorGet () const;
  46.     RpcIfServer* acceptorSet (RpcIfServer*);
  47.     const INETSockAddr& hostAddr ();
  48.     const INETSockAddr& peerAddr ();
  49.     friend ostream& operator<< (ostream&, const RpcEventHandler&);
  50.   private:
  51.     typedef STL_MAP(USHORT, IID) PresCtxMap;
  52.     
  53.     RpcPdu* m_pdu;
  54.     INETSockAddr m_hostAddr;
  55.     INETSockAddr m_peerAddr;
  56.     RpcDispatcher* m_dispatcher;
  57.     int          m_creatorTaskId;
  58.     RpcIfServer* m_acceptor;
  59.     PresCtxMap m_presCtxMap;
  60.     
  61.     int reply (const RpcPdu& pdu, RpcPdu& replyPdu);
  62.     int sendPdu (RpcPdu&);
  63.     int process ();
  64.     int dispatchPdu (const RpcPdu& pdu);
  65.     int dispatchBind (const RpcPdu& pdu);
  66.     int dispatchRequest (const RpcPdu& pdu);
  67.     int dispatchAuth3 (const RpcPdu&);
  68.     int concurrency ();
  69.     ThreadPool* RpcEventHandler::threadPool ();
  70.     // unsupported
  71.     RpcEventHandler (const RpcEventHandler& other);
  72.     RpcEventHandler& operator= (const RpcEventHandler& rhs);
  73.     };
  74. #endif // __INCRpcEventHandler_h