Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

153 lines
3.3 KiB

  1. /*++
  2. Copyright (c) 1994 Microsoft Corporation
  3. Module Name:
  4. connect.hxx
  5. Abstract:
  6. Contains the client-side connect handle class
  7. Author:
  8. Richard L Firth (rfirth) 03-Jan-1996
  9. Revision History:
  10. 03-Jan-1996 rfirth
  11. Created
  12. --*/
  13. //
  14. // forward references
  15. //
  16. class CServerInfo;
  17. /*++
  18. Class Description:
  19. This class defines the INTERNET_CONNECT_HANDLE_OBJECT.
  20. Private Member functions:
  21. None.
  22. Public Member functions:
  23. --*/
  24. class INTERNET_CONNECT_HANDLE_OBJECT : public INTERNET_HANDLE_BASE {
  25. protected:
  26. // params from WinHttpConnect
  27. ICSTRING _HostName;
  28. ICSTRING _HostNameNoScopeID;
  29. DWORD _HostNameFlags;
  30. INTERNET_PORT _HostPort;
  31. INTERNET_SCHEME _SchemeType; // http vs. https
  32. // Bits defined for _HostNameFlags
  33. static const DWORD _IPv4LiteralFlag = 0x1;
  34. static const DWORD _IPv6LiteralFlag = 0x2;
  35. static const DWORD _IPv6ScopeIDFlag = 0x4;
  36. public:
  37. INTERNET_CONNECT_HANDLE_OBJECT(
  38. INTERNET_HANDLE_BASE * INetObj,
  39. LPTSTR lpszServerName,
  40. INTERNET_PORT nServerPort,
  41. DWORD dwFlags
  42. );
  43. INTERNET_CONNECT_HANDLE_OBJECT(
  44. INTERNET_CONNECT_HANDLE_OBJECT * InternetConnectObj
  45. );
  46. INTERNET_CONNECT_HANDLE_OBJECT(
  47. INTERNET_HANDLE_BASE * Parent,
  48. HINTERNET Child,
  49. LPTSTR lpszServerName,
  50. INTERNET_PORT nServerPort,
  51. DWORD dwFlags
  52. );
  53. virtual ~INTERNET_CONNECT_HANDLE_OBJECT(VOID);
  54. virtual HINTERNET_HANDLE_TYPE GetHandleType(VOID)
  55. {
  56. return TypeHttpConnectHandle;
  57. }
  58. VOID SetHostName(LPSTR lpszHostName);
  59. LPSTR GetHostNameNoScopeID(VOID) {
  60. if ((_HostNameFlags & _IPv6ScopeIDFlag) != 0)
  61. {
  62. return _HostNameNoScopeID.StringAddress();
  63. }
  64. return _HostName.StringAddress();
  65. }
  66. LPSTR GetHostNameNoScopeID(LPDWORD lpdwStringLength){
  67. if ((_HostNameFlags & _IPv6ScopeIDFlag) != 0)
  68. {
  69. *lpdwStringLength = _HostNameNoScopeID.StringLength();
  70. return _HostNameNoScopeID.StringAddress();
  71. }
  72. *lpdwStringLength = _HostName.StringLength();
  73. return _HostName.StringAddress();
  74. }
  75. LPSTR GetHostName(VOID) {
  76. return _HostName.StringAddress();
  77. }
  78. LPSTR GetHostName(LPDWORD lpdwStringLength) {
  79. *lpdwStringLength = _HostName.StringLength();
  80. return _HostName.StringAddress();
  81. }
  82. LPSTR GetServerName(VOID) {
  83. return _HostName.StringAddress();;
  84. }
  85. BOOL IsHostNameIPLiteral(VOID) {
  86. return ((_HostNameFlags & (_IPv4LiteralFlag | _IPv6LiteralFlag)) != 0);
  87. }
  88. BOOL IsHostNameIPv4Literal(VOID) {
  89. return ((_HostNameFlags & _IPv4LiteralFlag) != 0);
  90. }
  91. BOOL IsHostNameIPv6Literal(VOID) {
  92. return ((_HostNameFlags & _IPv6LiteralFlag) != 0);
  93. }
  94. VOID SetHostPort(INTERNET_PORT Port) {
  95. _HostPort = Port;
  96. }
  97. INTERNET_PORT GetHostPort(VOID) {
  98. return _HostPort;
  99. }
  100. INTERNET_SCHEME GetSchemeType(VOID) const {
  101. return (_SchemeType == INTERNET_SCHEME_DEFAULT)
  102. ? INTERNET_SCHEME_HTTP
  103. : _SchemeType;
  104. }
  105. VOID SetSchemeType(INTERNET_SCHEME SchemeType) {
  106. _SchemeType = SchemeType;
  107. }
  108. };