Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cNetAddrName.h
Go to the documentation of this file.
1 //
5 //
6 
7 #ifndef _INC_cNetAddrName_H
8 #define _INC_cNetAddrName_H
9 #ifndef NO_PRAGMA_ONCE
10 #pragma once
11 #endif
12 
13 #include "cNetAddr.h"
15 
16 namespace GrayLib
17 {
19 
21  {
34 
35  protected:
40 
41  protected:
42  void FixAddrName();
43 
44  public:
45  cNetAddrName(NET_PORT_t wPortDefault = k_NET_PORT_INVALID)
46  : m_wPortDefault(wPortDefault)
47  {
49  ASSERT(!m_Addr.isAddrValid());
50  }
51  cNetAddrName(const char* pszHostAndPort, bool bWait = false)
52  : m_sAddrName(pszHostAndPort)
53  , m_wPortDefault(k_NET_PORT_INVALID)
54  , m_Addr(pszHostAndPort, bWait)
55  {
56  }
57  cNetAddrName(const char* pszHostAndMaybePort, NET_PORT_t wPortDefault, bool bWait = false)
58  : m_sAddrName(pszHostAndMaybePort)
59  , m_wPortDefault(wPortDefault)
60  , m_Addr(pszHostAndMaybePort, wPortDefault, bWait)
61  {
64  FixAddrName();
65  }
66  cNetAddrName(in_addr ip, NET_PORT_t wPort)
67  : m_wPortDefault(k_NET_PORT_INVALID)
68  , m_Addr(ip, wPort)
69  {
71  m_sAddrName = m_Addr.get_AddrStr(); // ="1.2.3.4:port"
72  }
73 
74  static inline bool IsValidHostNameChar(char ch)
75  {
77  switch (ch)
78  {
79  case '.':
80  case '-':
81  return true;
82  }
83  if (ch >= 'a'&&ch <= 'z')
84  return true;
85  if (ch >= 'A'&&ch <= 'Z')
86  return true;
87  if (ch >= '0'&&ch <= '9')
88  return true;
89  return false;
90  }
91 
92  HRESULT UpdateHostAddrFromName(bool bWait);
93  HRESULT UpdateHostNameFromAddr(bool bWait);
94 
95  bool isAddrValid() const
96  {
97  return m_Addr.isAddrValid();
98  }
99  const cNetAddress& get_Addr() const
100  {
101  return m_Addr;
102  }
104  {
106  return m_Addr;
107  }
108 
109  HRESULT SetAddr(const cNetAddress& rAddr, bool bWait = false)
110  {
111  m_Addr.put_Addr(rAddr);
112  return UpdateHostNameFromAddr(bWait); // reset name
113  }
114 
116  {
117  return m_Addr.get_PortNumber();
118  }
119  void SetAddrPort(NET_PORT_t wPort, bool bHasNonDefaultPort = false);
120 
122  {
125  if (isAddrValid()) // m_Addr is valid ?
126  {
127  return true;
128  }
129  // already tried?
130  return(UpdateHostAddrFromName(true) == S_OK);
131  }
132 
133  bool isEmptyAddrName() const
134  {
135  return(m_sAddrName.IsEmpty());
136  }
138  {
139  m_sAddrName.Empty();
140  m_Addr.ResetHost();
141  }
143  {
144  return m_sAddrName; // host name
145  }
146  HRESULT SetAddrName(cStringA sAddr, bool bWait = false);
147 
148  cStringA get_HostName() const;
149  HRESULT SetHostName(const char* pszHost, bool bWait = false);
150  HRESULT SetHostNameLocal(bool bWait);
151  void ResetHost()
152  {
154  m_Addr.ResetHost();
155  }
156 
158  };
159 }
160 #endif
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
#define ASSERT(exp)
Definition: cDebugAssert.h:87
Definition: cNetAddrName.h:21
cNetAddrName(NET_PORT_t wPortDefault=k_NET_PORT_INVALID)
Definition: cNetAddrName.h:45
cNetAddress m_Addr
resolved/Converted to native binary format. (NOTE: this may just be the first in a list resolved from...
Definition: cNetAddrName.h:39
cNetAddrName(const char *pszHostAndPort, bool bWait=false)
Definition: cNetAddrName.h:51
void ResetHost()
Definition: cNetAddrName.h:151
void SetEmptyAddrName()
Definition: cNetAddrName.h:137
bool MakeValidHostAddr()
Definition: cNetAddrName.h:121
cNetAddrName(in_addr ip, NET_PORT_t wPort)
Definition: cNetAddrName.h:66
cStringA m_sAddrName
This can be "hostname:port" or just "hostname". use NI_MAXHOST.
Definition: cNetAddrName.h:37
HRESULT SetAddr(const cNetAddress &rAddr, bool bWait=false)
Definition: cNetAddrName.h:109
cStringA get_AddrName() const
Definition: cNetAddrName.h:142
NET_PORT_t m_wPortDefault
This default port might (need not) be in name string. m_sAddrName.
Definition: cNetAddrName.h:38
bool isEmptyAddrName() const
Definition: cNetAddrName.h:133
static bool IsValidHostNameChar(char ch)
Definition: cNetAddrName.h:74
UNITTEST_FRIEND(cNetAddrName)
cNetAddrName(const char *pszHostAndMaybePort, NET_PORT_t wPortDefault, bool bWait=false)
Definition: cNetAddrName.h:57
NET_PORT_t get_AddrPort() const
Definition: cNetAddrName.h:115
bool isAddrValid() const
Definition: cNetAddrName.h:95
cNetAddress & ref_Addr()
Definition: cNetAddrName.h:103
const cNetAddress & get_Addr() const
Definition: cNetAddrName.h:99
Definition: cNetAddr.h:31
void ResetHost()
Definition: cNetAddr.h:262
void put_Addr(const cNetAddress &rAddr)
Definition: cNetAddr.h:273
NET_PORT_t get_PortNumber() const noexcept
Definition: cNetAddr.h:193
bool isAddrValid() const
Definition: cNetAddr.cpp:20
cStringA get_AddrStr() const
Definition: cNetAddr.cpp:414
void Empty()
Definition: cString.h:193
bool IsEmpty() const noexcept
Definition: cString.h:176
Definition: cMesh.h:22
WORD NET_PORT_t
WinINet calls ports NET_PORT_t INTERNET_PORT = a service.
Definition: cNetPort.h:21
UNITTEST2_PREDEF(cQuadtree)