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

VxWorks

开发平台:

C/C++

  1. /* Stublet.h - COM/DCOM Stublet class definition */
  2. /* Copyright (c) 1999 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01p,13jul01,dbs  fix up includes
  7. 01o,06jul99,dbs  add copy-ctor and assignment-operator
  8. 01n,10jun99,dbs  remove inclusion of comNew.h
  9. 01m,04jun99,dbs  add const to vtbl ctor arg
  10. 01l,03jun99,dbs  remove refs to comSyncLib
  11. 01k,28may99,dbs  make stub disp-tbl a structure
  12. 01j,18may99,dbs  change to new marshaling architecture
  13. 01i,14may99,dbs  change stub-function typename
  14. 01h,11may99,dbs  fix pure-virtual call problem
  15. 01g,11may99,dbs  remove inclusion of ChannelBuffer.h
  16. 01f,11may99,dbs  simplify stub remoting architecture
  17. 01e,29apr99,dbs  fix -Wall warnings
  18. 01d,28apr99,dbs  make all classes allocate from same pool
  19. 01c,27apr99,dbs  add mem-pool to class
  20. 01b,21apr99,dbs  add include for IRpcChannelBuffer
  21. 01a,20apr99,dbs  created during Grand Renaming
  22. */
  23. #ifndef __INCStublet_h
  24. #define __INCStublet_h
  25. #include "dcomProxy.h"
  26. #include "private/comMisc.h"
  27. ///////////////////////////////////////////////////////////////////////////
  28. //
  29. // VxStublet - an object that implements the interface-stub
  30. // functionality required by the std marshaling stub manager
  31. // (VxStdStub) and dispatches RPC invocations into the actual object
  32. // interface it is representing.
  33. //
  34. class VxStublet
  35.     {
  36.     DWORD m_dwRefCount; // ref count
  37.     VxMutex m_mutex; // task safety
  38.     IUnknown* m_punkServer; // interface we are stub of
  39.     IID                 m_iidServer;    // IID of that interface
  40.     IPID m_ipid; // IPID of that interface
  41.     const VXDCOM_STUB_DISPTBL* m_pDispTbl; // stub dispatch table
  42.     VxStublet& operator= (const VxStublet&);
  43.     VxStublet::VxStublet (const VxStublet&);
  44.   public:
  45.     VxStublet
  46. (
  47. IUnknown* punkServer,
  48. REFIID iid,
  49. REFIPID ipid,
  50. const VXDCOM_STUB_DISPTBL* dispTbl
  51. );
  52.     
  53.     ~VxStublet ();
  54.     // accessors
  55.     REFIID iid () const { return m_iidServer; }
  56.     REFIPID ipid () const { return m_ipid; }
  57.     ULONG refs () const { return m_dwRefCount; }
  58.     
  59.     // add/remove remote references
  60.     ULONG addRefs (ULONG nRefs);
  61.     ULONG relRefs (ULONG nRefs);
  62.     // get info about stublet for calling methods
  63.     HRESULT stubInfoGet (ULONG, IUnknown**, PFN_ORPC_STUB*);
  64.     };
  65. #endif