Endpoint.h
1 /*
2  * Copyright (C) 2013 Marc Duerner
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * As a special exception, you may use this file as part of a free
10  * software library without restriction. Specifically, if other files
11  * instantiate templates or use macros or inline functions from this
12  * file, or you compile this file and link it with other files to
13  * produce an executable, this file does not by itself cause the
14  * resulting executable to be covered by the GNU General Public
15  * License. This exception does not however invalidate any other
16  * reasons why the executable file might be covered by the GNU Library
17  * General Public License.
18  *
19  * This library is distributed in the hope that it will be useful,
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22  * Lesser General Public License for more details.
23  *
24  * You should have received a copy of the GNU Lesser General Public
25  * License along with this library; if not, write to the Free Software
26  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
27  */
28 
29 #ifndef PT_NET_ENDPOINT_H
30 #define PT_NET_ENDPOINT_H
31 
32 #include <Pt/Net/Api.h>
33 #include <string>
34 
35 namespace Pt {
36 
37 namespace Net {
38 
39 class EndpointImpl;
40 
46 class PT_NET_API Endpoint
47 {
48  public:
52 
55  Endpoint(const std::string& host, unsigned short port);
56 
59  Endpoint(const char* host, unsigned short port);
60 
63  Endpoint(const Endpoint& src);
64 
68 
71  Endpoint& operator=(const Endpoint& src);
72 
75  void clear();
76 
79  std::string toString() const;
80 
83  static Endpoint ip4Any(unsigned short port);
84 
87  static Endpoint ip4Loopback(unsigned short port);
88 
91  static Endpoint ip4Broadcast(unsigned short port);
92 
95  static Endpoint ip6Any(unsigned short port);
96 
99  static Endpoint ip6Loopback(unsigned short port);
100 
102  explicit Endpoint(EndpointImpl* impl);
103 
105  EndpointImpl* impl()
106  { return _impl; }
107 
109  const EndpointImpl* impl() const
110  { return _impl; }
111 
112  private:
113  EndpointImpl* _impl;
114 };
115 
116 } // namespace Net
117 
118 } // namespace Pt
119 
120 #endif // PT_NET_ENDPOINT_H
Core module.
Definition: Allocator.h:33
std::string toString() const
Returns the endpoint a s a string.
static Endpoint ip6Any(unsigned short port)
Constructs the special IP6 any address.
void clear()
Clears the endpoint.
Endpoint(const Endpoint &src)
Copy contructor.
Endpoint(const std::string &host, unsigned short port)
Contruct from hostname and port number.
static Endpoint ip4Broadcast(unsigned short port)
Constructs the special IP4 broadcast address.
Represents a Network Host.
Definition: Endpoint.h:47
Endpoint & operator=(const Endpoint &src)
Assignment operator.
Endpoint()
Default contructor.
static Endpoint ip6Loopback(unsigned short port)
Constructs the special IP6 loopback address.
Endpoint(const char *host, unsigned short port)
Contruct from hostname and port number.
static Endpoint ip4Any(unsigned short port)
Constructs the special IP4 any address.
static Endpoint ip4Loopback(unsigned short port)
Constructs the special IP4 loopback address.
~Endpoint()
Destructor.