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

VxWorks

开发平台:

C/C++

  1. /* RpcStringBinding - A DCE/RPC endpoints symbolic address */
  2. /* Copyright (c) 1999 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01g,13jul01,dbs  fix up includes
  7. 01f,13mar01,nel  SPR#35873 - add extra method to check to see if an address
  8.                  string can be resolved.
  9. 01e,16jul99,aim  added formatNoPortNumber
  10. 01d,15jul99,dbs  add isLocalhost() method
  11. 01c,08jul99,dbs  add equality operator
  12. 01b,07jul99,aim  added strdup; apparently it doesn't exist on the target??
  13. 01a,06jul99,aim  created
  14. */
  15. #ifndef __INCRpcStringBinding_h
  16. #define __INCRpcStringBinding_h
  17. #include <iostream>
  18. #include "dcomLib.h"
  19. #include "comLib.h"
  20. #include "SockAddr.h"
  21. #include "orpc.h"
  22. class RpcStringBinding
  23.     {
  24.   public:
  25.     enum { ncacn_ip_tcp = 7 };
  26.     virtual ~RpcStringBinding ();
  27.     RpcStringBinding ();
  28.     RpcStringBinding
  29.         (
  30.         DUALSTRINGARRAY*        pdsa,
  31.         int portNumber = -1
  32.         );
  33.     RpcStringBinding
  34. (
  35. const char* binding,
  36. PROTSEQ         protSeq = ncacn_ip_tcp
  37. );
  38.     RpcStringBinding
  39. (
  40. const OLECHAR* binding,
  41. PROTSEQ         protSeq = ncacn_ip_tcp
  42. );
  43.     RpcStringBinding
  44. (
  45. const char* binding, 
  46. PROTSEQ         protSeq,
  47. int portNumber
  48. );
  49.     RpcStringBinding
  50. (
  51. const OLECHAR* binding, 
  52. PROTSEQ         protSeq,
  53. int portNumber
  54. );
  55.     RpcStringBinding
  56. (
  57. const SockAddr& sockAddr,
  58. PROTSEQ protSeq = ncacn_ip_tcp
  59. );
  60.     RpcStringBinding (const RpcStringBinding& other);
  61.     RpcStringBinding& operator= (const RpcStringBinding& rhs);
  62.     bool isValid () const;
  63.     bool isLocalhost () const;
  64.     bool resolve () const;
  65.     
  66.     const char* formatted (bool includePortNumber = true) const;
  67.     // returns: protseq<host-addr>[<port>]
  68.     // Accessors
  69.     const char* ipAddress () const;
  70.     int portNumber () const;
  71.     PROTSEQ protocolSequence () const;
  72.     int format
  73. (
  74. BSTR* bstr,
  75. bool includePortNumber = true
  76. ) const;
  77.     bool operator== (const RpcStringBinding& sb) const;
  78.     bool operator< (const RpcStringBinding& sb) const;
  79.     
  80.     friend ostream& operator<< (ostream& os, const RpcStringBinding&);
  81.   private:
  82.     
  83.     char*   m_ipAddress;
  84.     int   m_portNumber;
  85.     PROTSEQ   m_protocolSeq;
  86.     mutable char* m_strFormat;
  87.     mutable char* m_strFormatNoPortNumber;
  88.     int initialiseFromString (const char* binding);
  89.     char* copyString (const char*) const;
  90.     void  delString (char*&);
  91.     };
  92. #endif // __INCRpcStringBinding_h