Electroneum
levin_client.h
Go to the documentation of this file.
1 // Copyright (c) 2006-2013, Andrey N. Sabelnikov, www.sabelnikov.net
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above copyright
9 // notice, this list of conditions and the following disclaimer in the
10 // documentation and/or other materials provided with the distribution.
11 // * Neither the name of the Andrey N. Sabelnikov nor the
12 // names of its contributors may be used to endorse or promote products
13 // derived from this software without specific prior written permission.
14 //
15 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER BE LIABLE FOR ANY
19 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 //
26 
27 
28 
29 
30 
31 #ifndef _LEVIN_CLIENT_H_
32 #define _LEVIN_CLIENT_H_
33 
34 #include "net_helper.h"
35 #include "levin_base.h"
36 
37 
38 #ifndef MAKE_IP
39 #define MAKE_IP( a1, a2, a3, a4 ) (a1|(a2<<8)|(a3<<16)|(a4<<24))
40 #endif
41 
42 namespace epee
43 {
44 namespace levin
45 {
46  /************************************************************************/
47  /* */
48  /************************************************************************/
50  {
51  public:
53  virtual ~levin_client_impl();
54 
55  bool connect(u_long ip, int port, unsigned int timeout, const std::string& bind_ip = "0.0.0.0");
56  bool connect(const std::string& addr, int port, unsigned int timeout, const std::string& bind_ip = "0.0.0.0");
57  bool is_connected();
58  bool disconnect();
59 
60  virtual int invoke(int command, const epee::span<const uint8_t> in_buff, std::string& buff_out);
61  virtual int notify(int command, const std::string& in_buff);
62 
63  protected:
65  };
66 
67 
68  /************************************************************************/
69  /* */
70  /************************************************************************/
72  {
73  public:
74 
75  int invoke(int command, const epee::span<const uint8_t> in_buff, std::string& buff_out);
76  int notify(int command, const std::string& in_buff);
77  };
78 
79 }
80 namespace net_utils
81 {
84 }
85 }
86 
87 #include "levin_client.inl"
88 
89 #endif //_LEVIN_CLIENT_H_
::std::string string
Definition: gtest-port.h:1097
Non-owning sequence of data. Does not deep copy.
Definition: span.h:56
bool connect(u_long ip, int port, unsigned int timeout, const std::string &bind_ip="0.0.0.0")
virtual int invoke(int command, const epee::span< const uint8_t > in_buff, std::string &buff_out)
int notify(int command, const std::string &in_buff)
levin::levin_client_impl2 levin_client2
Definition: levin_client.h:83
boost::endian::big_uint32_t ip
Definition: socks.cpp:61
boost::endian::big_uint16_t port
Definition: socks.cpp:60
levin::levin_client_impl levin_client
Definition: levin_client.h:82
int invoke(int command, const epee::span< const uint8_t > in_buff, std::string &buff_out)
virtual int notify(int command, const std::string &in_buff)
net_utils::blocked_mode_client m_transport
Definition: levin_client.h:64