Electroneum
Loading...
Searching...
No Matches
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
42namespace epee
43{
44namespace levin
45{
46 /************************************************************************/
47 /* */
48 /************************************************************************/
50 {
51 public:
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");
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}
80namespace net_utils
81{
84}
85}
86
87#include "levin_client.inl"
88
89#endif //_LEVIN_CLIENT_H_
int notify(int command, const std::string &in_buff)
int invoke(int command, const epee::span< const uint8_t > in_buff, std::string &buff_out)
virtual int invoke(int command, const epee::span< const uint8_t > in_buff, std::string &buff_out)
bool connect(u_long ip, int port, unsigned int timeout, const std::string &bind_ip="0.0.0.0")
bool connect(const std::string &addr, int port, unsigned int timeout, const std::string &bind_ip="0.0.0.0")
net_utils::blocked_mode_client m_transport
virtual int notify(int command, const std::string &in_buff)
Non-owning sequence of data. Does not deep copy.
Definition span.h:57
levin::levin_client_impl2 levin_client2
levin::levin_client_impl levin_client