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

VxWorks

开发平台:

C/C++

  1. /* RemoteSCM.h -- VxDCOM Remote SCM class */
  2. /* Copyright (c) 1999 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01f,26jul01,dbs  use IOrpcClientChannel interface
  7. 01e,13jul01,dbs  fix up includes
  8. 01d,22jul99,dbs  add re-use of remote-SCM connection
  9. 01c,16jul99,dbs  convert map/set with long long key to use new macros
  10. 01b,09jul99,dbs  implement ping functionality in SCM now
  11. 01a,09jul99,dbs  created
  12. */
  13. #ifndef __INCRemoteSCM_h
  14. #define __INCRemoteSCM_h
  15. #include "comObjLib.h"
  16. #include "dcomLib.h"
  17. #include "private/comStl.h"
  18. #include "RemoteOxid.h"
  19. typedef CComPtr<IOrpcClientChannel> IOrpcClientChannelPtr;
  20. class RemoteSCM
  21.     {
  22.   public:
  23.     
  24.     RemoteSCM (const RpcStringBinding& sb);
  25.     RemoteSCM ();
  26.     ~RemoteSCM ();
  27.     // ref-counting methods
  28.     ULONG AddRef ();
  29.     ULONG Release ();
  30.     // accessors
  31.     const RpcStringBinding& stringBinding () const
  32. { return m_strb; }
  33.     // method to return a connection to the remote SCM
  34.     IOrpcClientChannel* connectionGet ();
  35.     
  36.     // method to look up an OXID binding
  37.     bool oxidBindingLookup (OXID, SPRemoteOxid&) const;
  38.     // method to update the table of OXID bindings
  39.     void oxidBindingUpdate
  40. (
  41. OXID oxid,
  42. REFIPID ipidRemUnk,
  43. const RpcStringBinding& sbRemoteOxid
  44. );
  45.     // method to indicate passage of time in ping-handling
  46.     void pingTick (size_t nSecs);
  47.     // methods to add/delete OIDs from ping-sets
  48.     void oidAdd (OID oid)
  49. {
  50. VxCritSec cs (m_mutex);
  51. m_oidsToAdd.push_back (oid);
  52. }
  53.     void oidDel (OID oid)
  54. {
  55. VxCritSec cs (m_mutex);
  56. m_oidsToDel.push_back (oid);
  57. }
  58.     
  59.     
  60.   private:
  61.     // not implemented
  62.     RemoteSCM (const RemoteSCM&);
  63.     RemoteSCM& operator= (const RemoteSCM&);
  64.     typedef STL_MAP_LL(SPRemoteOxid) OXIDMAP;
  65.     typedef STL_VECTOR(OID) OIDSET;
  66.     VxMutex m_mutex;
  67.     LONG m_dwRefCount;
  68.     OXIDMAP m_remoteOxidTable;
  69.     RpcStringBinding m_strb;
  70.     IOrpcClientChannelPtr  m_pChannel;
  71.     
  72.     SETID m_setid;
  73.     unsigned short m_pingSeqNum;
  74.     OIDSET m_oidsToAdd;
  75.     OIDSET m_oidsToDel;
  76.     long m_tickCount;
  77.     };
  78. typedef CComPtr<RemoteSCM> SPRemoteSCM;
  79. #endif