working commit
This commit is contained in:
@@ -89,8 +89,9 @@ NORMAL_UNINSTALL = :
|
|||||||
PRE_UNINSTALL = :
|
PRE_UNINSTALL = :
|
||||||
POST_UNINSTALL = :
|
POST_UNINSTALL = :
|
||||||
sbin_PROGRAMS = helmetd$(EXEEXT)
|
sbin_PROGRAMS = helmetd$(EXEEXT)
|
||||||
noinst_PROGRAMS = udpclient_test$(EXEEXT) service_test$(EXEEXT) \
|
noinst_PROGRAMS = tcpclient_test$(EXEEXT) udpclient_test$(EXEEXT) \
|
||||||
tunclient_test$(EXEEXT) message_test$(EXEEXT)
|
service_test$(EXEEXT) tunclient_test$(EXEEXT) \
|
||||||
|
message_test$(EXEEXT)
|
||||||
subdir = .
|
subdir = .
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
@@ -108,7 +109,8 @@ am__installdirs = "$(DESTDIR)$(sbindir)"
|
|||||||
PROGRAMS = $(noinst_PROGRAMS) $(sbin_PROGRAMS)
|
PROGRAMS = $(noinst_PROGRAMS) $(sbin_PROGRAMS)
|
||||||
am_helmetd_OBJECTS = helmetd.$(OBJEXT) tunclient.$(OBJEXT) \
|
am_helmetd_OBJECTS = helmetd.$(OBJEXT) tunclient.$(OBJEXT) \
|
||||||
service.$(OBJEXT) interface.$(OBJEXT) hello.pb.$(OBJEXT) \
|
service.$(OBJEXT) interface.$(OBJEXT) hello.pb.$(OBJEXT) \
|
||||||
udpclient.$(OBJEXT) resolver.$(OBJEXT) iprouter.$(OBJEXT)
|
udpclient.$(OBJEXT) resolver.$(OBJEXT) iprouter.$(OBJEXT) \
|
||||||
|
tcpclient.$(OBJEXT) rpcclient.$(OBJEXT)
|
||||||
helmetd_OBJECTS = $(am_helmetd_OBJECTS)
|
helmetd_OBJECTS = $(am_helmetd_OBJECTS)
|
||||||
helmetd_LDADD = $(LDADD)
|
helmetd_LDADD = $(LDADD)
|
||||||
am_message_test_OBJECTS = message_test.$(OBJEXT) hello.pb.$(OBJEXT)
|
am_message_test_OBJECTS = message_test.$(OBJEXT) hello.pb.$(OBJEXT)
|
||||||
@@ -118,6 +120,10 @@ am_service_test_OBJECTS = service_test.$(OBJEXT) tunclient.$(OBJEXT) \
|
|||||||
service.$(OBJEXT) interface.$(OBJEXT)
|
service.$(OBJEXT) interface.$(OBJEXT)
|
||||||
service_test_OBJECTS = $(am_service_test_OBJECTS)
|
service_test_OBJECTS = $(am_service_test_OBJECTS)
|
||||||
service_test_LDADD = $(LDADD)
|
service_test_LDADD = $(LDADD)
|
||||||
|
am_tcpclient_test_OBJECTS = resolver.$(OBJEXT) tcpclient.$(OBJEXT) \
|
||||||
|
tcpclient_test.$(OBJEXT)
|
||||||
|
tcpclient_test_OBJECTS = $(am_tcpclient_test_OBJECTS)
|
||||||
|
tcpclient_test_LDADD = $(LDADD)
|
||||||
am_tunclient_test_OBJECTS = tunclient_test.$(OBJEXT) \
|
am_tunclient_test_OBJECTS = tunclient_test.$(OBJEXT) \
|
||||||
tunclient.$(OBJEXT) service.$(OBJEXT) interface.$(OBJEXT)
|
tunclient.$(OBJEXT) service.$(OBJEXT) interface.$(OBJEXT)
|
||||||
tunclient_test_OBJECTS = $(am_tunclient_test_OBJECTS)
|
tunclient_test_OBJECTS = $(am_tunclient_test_OBJECTS)
|
||||||
@@ -167,11 +173,11 @@ am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
|
|||||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||||
am__v_CCLD_1 =
|
am__v_CCLD_1 =
|
||||||
SOURCES = $(helmetd_SOURCES) $(message_test_SOURCES) \
|
SOURCES = $(helmetd_SOURCES) $(message_test_SOURCES) \
|
||||||
$(service_test_SOURCES) $(tunclient_test_SOURCES) \
|
$(service_test_SOURCES) $(tcpclient_test_SOURCES) \
|
||||||
$(udpclient_test_SOURCES)
|
$(tunclient_test_SOURCES) $(udpclient_test_SOURCES)
|
||||||
DIST_SOURCES = $(helmetd_SOURCES) $(message_test_SOURCES) \
|
DIST_SOURCES = $(helmetd_SOURCES) $(message_test_SOURCES) \
|
||||||
$(service_test_SOURCES) $(tunclient_test_SOURCES) \
|
$(service_test_SOURCES) $(tcpclient_test_SOURCES) \
|
||||||
$(udpclient_test_SOURCES)
|
$(tunclient_test_SOURCES) $(udpclient_test_SOURCES)
|
||||||
am__can_run_installinfo = \
|
am__can_run_installinfo = \
|
||||||
case $$AM_UPDATE_INFO_DIR in \
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
n|no|NO) false;; \
|
n|no|NO) false;; \
|
||||||
@@ -251,7 +257,7 @@ INSTALL_SCRIPT = ${INSTALL}
|
|||||||
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
|
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
|
||||||
LDFLAGS = -pthread
|
LDFLAGS = -pthread
|
||||||
LIBOBJS =
|
LIBOBJS =
|
||||||
LIBS = -Wl,--as-need -lprotobuf-lite
|
LIBS = -Wl,--as-need -lprotobuf
|
||||||
LTLIBOBJS =
|
LTLIBOBJS =
|
||||||
MAKEINFO = ${SHELL} '/home/ziggi/Projects/tcpserv09/missing' makeinfo
|
MAKEINFO = ${SHELL} '/home/ziggi/Projects/tcpserv09/missing' makeinfo
|
||||||
MKDIR_P = /bin/mkdir -p
|
MKDIR_P = /bin/mkdir -p
|
||||||
@@ -324,7 +330,9 @@ helmetd_SOURCES = helmetd.cpp \
|
|||||||
hello.pb.cc hello.pb.h \
|
hello.pb.cc hello.pb.h \
|
||||||
udpclient.cpp udpclient.hpp \
|
udpclient.cpp udpclient.hpp \
|
||||||
resolver.cpp resolver.hpp \
|
resolver.cpp resolver.hpp \
|
||||||
iprouter.cpp iprouter.hpp
|
iprouter.cpp iprouter.hpp \
|
||||||
|
tcpclient.cpp tcpclient.hpp \
|
||||||
|
rpcclient.cpp rpcclient.hpp
|
||||||
|
|
||||||
tunclient_test_SOURCES = tunclient_test.cpp \
|
tunclient_test_SOURCES = tunclient_test.cpp \
|
||||||
tunclient.cpp tunclient.hpp \
|
tunclient.cpp tunclient.hpp \
|
||||||
@@ -341,6 +349,11 @@ udpclient_test_SOURCES = \
|
|||||||
udpclient.cpp udpclient.hpp \
|
udpclient.cpp udpclient.hpp \
|
||||||
udpclient_test.cpp
|
udpclient_test.cpp
|
||||||
|
|
||||||
|
tcpclient_test_SOURCES = \
|
||||||
|
resolver.cpp resolver.hpp \
|
||||||
|
tcpclient.cpp tcpclient.hpp \
|
||||||
|
tcpclient_test.cpp
|
||||||
|
|
||||||
message_test_SOURCES = message_test.cpp \
|
message_test_SOURCES = message_test.cpp \
|
||||||
hello.pb.cc hello.pb.h
|
hello.pb.cc hello.pb.h
|
||||||
|
|
||||||
@@ -456,6 +469,10 @@ service_test$(EXEEXT): $(service_test_OBJECTS) $(service_test_DEPENDENCIES) $(EX
|
|||||||
@rm -f service_test$(EXEEXT)
|
@rm -f service_test$(EXEEXT)
|
||||||
$(AM_V_CXXLD)$(CXXLINK) $(service_test_OBJECTS) $(service_test_LDADD) $(LIBS)
|
$(AM_V_CXXLD)$(CXXLINK) $(service_test_OBJECTS) $(service_test_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
tcpclient_test$(EXEEXT): $(tcpclient_test_OBJECTS) $(tcpclient_test_DEPENDENCIES) $(EXTRA_tcpclient_test_DEPENDENCIES)
|
||||||
|
@rm -f tcpclient_test$(EXEEXT)
|
||||||
|
$(AM_V_CXXLD)$(CXXLINK) $(tcpclient_test_OBJECTS) $(tcpclient_test_LDADD) $(LIBS)
|
||||||
|
|
||||||
tunclient_test$(EXEEXT): $(tunclient_test_OBJECTS) $(tunclient_test_DEPENDENCIES) $(EXTRA_tunclient_test_DEPENDENCIES)
|
tunclient_test$(EXEEXT): $(tunclient_test_OBJECTS) $(tunclient_test_DEPENDENCIES) $(EXTRA_tunclient_test_DEPENDENCIES)
|
||||||
@rm -f tunclient_test$(EXEEXT)
|
@rm -f tunclient_test$(EXEEXT)
|
||||||
$(AM_V_CXXLD)$(CXXLINK) $(tunclient_test_OBJECTS) $(tunclient_test_LDADD) $(LIBS)
|
$(AM_V_CXXLD)$(CXXLINK) $(tunclient_test_OBJECTS) $(tunclient_test_LDADD) $(LIBS)
|
||||||
|
|||||||
+12
-2
@@ -3,7 +3,7 @@ AUTOMAKE_OPTIONS = foreign no-dependencies no-installinfo subdir-objects
|
|||||||
|
|
||||||
CXXFLAGS = -std=c++23 -Wall -I. -pthread -D_GNU_SOURCE=1
|
CXXFLAGS = -std=c++23 -Wall -I. -pthread -D_GNU_SOURCE=1
|
||||||
LDFLAGS = -pthread
|
LDFLAGS = -pthread
|
||||||
LIBS = -Wl,--as-need -lprotobuf-lite
|
LIBS = -Wl,--as-need -lprotobuf
|
||||||
|
|
||||||
sbin_PROGRAMS = helmetd
|
sbin_PROGRAMS = helmetd
|
||||||
|
|
||||||
@@ -14,9 +14,13 @@ helmetd_SOURCES = helmetd.cpp \
|
|||||||
hello.pb.cc hello.pb.h \
|
hello.pb.cc hello.pb.h \
|
||||||
udpclient.cpp udpclient.hpp \
|
udpclient.cpp udpclient.hpp \
|
||||||
resolver.cpp resolver.hpp \
|
resolver.cpp resolver.hpp \
|
||||||
iprouter.cpp iprouter.hpp
|
iprouter.cpp iprouter.hpp \
|
||||||
|
tcpclient.cpp tcpclient.hpp \
|
||||||
|
rpcclient.cpp rpcclient.hpp
|
||||||
|
|
||||||
|
|
||||||
noinst_PROGRAMS = \
|
noinst_PROGRAMS = \
|
||||||
|
tcpclient_test \
|
||||||
udpclient_test \
|
udpclient_test \
|
||||||
service_test \
|
service_test \
|
||||||
tunclient_test \
|
tunclient_test \
|
||||||
@@ -38,6 +42,12 @@ udpclient_test_SOURCES = \
|
|||||||
udpclient.cpp udpclient.hpp \
|
udpclient.cpp udpclient.hpp \
|
||||||
udpclient_test.cpp
|
udpclient_test.cpp
|
||||||
|
|
||||||
|
tcpclient_test_SOURCES = \
|
||||||
|
resolver.cpp resolver.hpp \
|
||||||
|
tcpclient.cpp tcpclient.hpp \
|
||||||
|
tcpclient_test.cpp
|
||||||
|
|
||||||
|
|
||||||
message_test_SOURCES = message_test.cpp \
|
message_test_SOURCES = message_test.cpp \
|
||||||
hello.pb.cc hello.pb.h
|
hello.pb.cc hello.pb.h
|
||||||
|
|
||||||
|
|||||||
+26
-9
@@ -89,8 +89,9 @@ NORMAL_UNINSTALL = :
|
|||||||
PRE_UNINSTALL = :
|
PRE_UNINSTALL = :
|
||||||
POST_UNINSTALL = :
|
POST_UNINSTALL = :
|
||||||
sbin_PROGRAMS = helmetd$(EXEEXT)
|
sbin_PROGRAMS = helmetd$(EXEEXT)
|
||||||
noinst_PROGRAMS = udpclient_test$(EXEEXT) service_test$(EXEEXT) \
|
noinst_PROGRAMS = tcpclient_test$(EXEEXT) udpclient_test$(EXEEXT) \
|
||||||
tunclient_test$(EXEEXT) message_test$(EXEEXT)
|
service_test$(EXEEXT) tunclient_test$(EXEEXT) \
|
||||||
|
message_test$(EXEEXT)
|
||||||
subdir = .
|
subdir = .
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||||
@@ -108,7 +109,8 @@ am__installdirs = "$(DESTDIR)$(sbindir)"
|
|||||||
PROGRAMS = $(noinst_PROGRAMS) $(sbin_PROGRAMS)
|
PROGRAMS = $(noinst_PROGRAMS) $(sbin_PROGRAMS)
|
||||||
am_helmetd_OBJECTS = helmetd.$(OBJEXT) tunclient.$(OBJEXT) \
|
am_helmetd_OBJECTS = helmetd.$(OBJEXT) tunclient.$(OBJEXT) \
|
||||||
service.$(OBJEXT) interface.$(OBJEXT) hello.pb.$(OBJEXT) \
|
service.$(OBJEXT) interface.$(OBJEXT) hello.pb.$(OBJEXT) \
|
||||||
udpclient.$(OBJEXT) resolver.$(OBJEXT) iprouter.$(OBJEXT)
|
udpclient.$(OBJEXT) resolver.$(OBJEXT) iprouter.$(OBJEXT) \
|
||||||
|
tcpclient.$(OBJEXT) rpcclient.$(OBJEXT)
|
||||||
helmetd_OBJECTS = $(am_helmetd_OBJECTS)
|
helmetd_OBJECTS = $(am_helmetd_OBJECTS)
|
||||||
helmetd_LDADD = $(LDADD)
|
helmetd_LDADD = $(LDADD)
|
||||||
am_message_test_OBJECTS = message_test.$(OBJEXT) hello.pb.$(OBJEXT)
|
am_message_test_OBJECTS = message_test.$(OBJEXT) hello.pb.$(OBJEXT)
|
||||||
@@ -118,6 +120,10 @@ am_service_test_OBJECTS = service_test.$(OBJEXT) tunclient.$(OBJEXT) \
|
|||||||
service.$(OBJEXT) interface.$(OBJEXT)
|
service.$(OBJEXT) interface.$(OBJEXT)
|
||||||
service_test_OBJECTS = $(am_service_test_OBJECTS)
|
service_test_OBJECTS = $(am_service_test_OBJECTS)
|
||||||
service_test_LDADD = $(LDADD)
|
service_test_LDADD = $(LDADD)
|
||||||
|
am_tcpclient_test_OBJECTS = resolver.$(OBJEXT) tcpclient.$(OBJEXT) \
|
||||||
|
tcpclient_test.$(OBJEXT)
|
||||||
|
tcpclient_test_OBJECTS = $(am_tcpclient_test_OBJECTS)
|
||||||
|
tcpclient_test_LDADD = $(LDADD)
|
||||||
am_tunclient_test_OBJECTS = tunclient_test.$(OBJEXT) \
|
am_tunclient_test_OBJECTS = tunclient_test.$(OBJEXT) \
|
||||||
tunclient.$(OBJEXT) service.$(OBJEXT) interface.$(OBJEXT)
|
tunclient.$(OBJEXT) service.$(OBJEXT) interface.$(OBJEXT)
|
||||||
tunclient_test_OBJECTS = $(am_tunclient_test_OBJECTS)
|
tunclient_test_OBJECTS = $(am_tunclient_test_OBJECTS)
|
||||||
@@ -167,11 +173,11 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
|||||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||||
am__v_CCLD_1 =
|
am__v_CCLD_1 =
|
||||||
SOURCES = $(helmetd_SOURCES) $(message_test_SOURCES) \
|
SOURCES = $(helmetd_SOURCES) $(message_test_SOURCES) \
|
||||||
$(service_test_SOURCES) $(tunclient_test_SOURCES) \
|
$(service_test_SOURCES) $(tcpclient_test_SOURCES) \
|
||||||
$(udpclient_test_SOURCES)
|
$(tunclient_test_SOURCES) $(udpclient_test_SOURCES)
|
||||||
DIST_SOURCES = $(helmetd_SOURCES) $(message_test_SOURCES) \
|
DIST_SOURCES = $(helmetd_SOURCES) $(message_test_SOURCES) \
|
||||||
$(service_test_SOURCES) $(tunclient_test_SOURCES) \
|
$(service_test_SOURCES) $(tcpclient_test_SOURCES) \
|
||||||
$(udpclient_test_SOURCES)
|
$(tunclient_test_SOURCES) $(udpclient_test_SOURCES)
|
||||||
am__can_run_installinfo = \
|
am__can_run_installinfo = \
|
||||||
case $$AM_UPDATE_INFO_DIR in \
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
n|no|NO) false;; \
|
n|no|NO) false;; \
|
||||||
@@ -251,7 +257,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
LDFLAGS = -pthread
|
LDFLAGS = -pthread
|
||||||
LIBOBJS = @LIBOBJS@
|
LIBOBJS = @LIBOBJS@
|
||||||
LIBS = -Wl,--as-need -lprotobuf-lite
|
LIBS = -Wl,--as-need -lprotobuf
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
MAKEINFO = @MAKEINFO@
|
MAKEINFO = @MAKEINFO@
|
||||||
MKDIR_P = @MKDIR_P@
|
MKDIR_P = @MKDIR_P@
|
||||||
@@ -324,7 +330,9 @@ helmetd_SOURCES = helmetd.cpp \
|
|||||||
hello.pb.cc hello.pb.h \
|
hello.pb.cc hello.pb.h \
|
||||||
udpclient.cpp udpclient.hpp \
|
udpclient.cpp udpclient.hpp \
|
||||||
resolver.cpp resolver.hpp \
|
resolver.cpp resolver.hpp \
|
||||||
iprouter.cpp iprouter.hpp
|
iprouter.cpp iprouter.hpp \
|
||||||
|
tcpclient.cpp tcpclient.hpp \
|
||||||
|
rpcclient.cpp rpcclient.hpp
|
||||||
|
|
||||||
tunclient_test_SOURCES = tunclient_test.cpp \
|
tunclient_test_SOURCES = tunclient_test.cpp \
|
||||||
tunclient.cpp tunclient.hpp \
|
tunclient.cpp tunclient.hpp \
|
||||||
@@ -341,6 +349,11 @@ udpclient_test_SOURCES = \
|
|||||||
udpclient.cpp udpclient.hpp \
|
udpclient.cpp udpclient.hpp \
|
||||||
udpclient_test.cpp
|
udpclient_test.cpp
|
||||||
|
|
||||||
|
tcpclient_test_SOURCES = \
|
||||||
|
resolver.cpp resolver.hpp \
|
||||||
|
tcpclient.cpp tcpclient.hpp \
|
||||||
|
tcpclient_test.cpp
|
||||||
|
|
||||||
message_test_SOURCES = message_test.cpp \
|
message_test_SOURCES = message_test.cpp \
|
||||||
hello.pb.cc hello.pb.h
|
hello.pb.cc hello.pb.h
|
||||||
|
|
||||||
@@ -456,6 +469,10 @@ service_test$(EXEEXT): $(service_test_OBJECTS) $(service_test_DEPENDENCIES) $(EX
|
|||||||
@rm -f service_test$(EXEEXT)
|
@rm -f service_test$(EXEEXT)
|
||||||
$(AM_V_CXXLD)$(CXXLINK) $(service_test_OBJECTS) $(service_test_LDADD) $(LIBS)
|
$(AM_V_CXXLD)$(CXXLINK) $(service_test_OBJECTS) $(service_test_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
tcpclient_test$(EXEEXT): $(tcpclient_test_OBJECTS) $(tcpclient_test_DEPENDENCIES) $(EXTRA_tcpclient_test_DEPENDENCIES)
|
||||||
|
@rm -f tcpclient_test$(EXEEXT)
|
||||||
|
$(AM_V_CXXLD)$(CXXLINK) $(tcpclient_test_OBJECTS) $(tcpclient_test_LDADD) $(LIBS)
|
||||||
|
|
||||||
tunclient_test$(EXEEXT): $(tunclient_test_OBJECTS) $(tunclient_test_DEPENDENCIES) $(EXTRA_tunclient_test_DEPENDENCIES)
|
tunclient_test$(EXEEXT): $(tunclient_test_OBJECTS) $(tunclient_test_DEPENDENCIES) $(EXTRA_tunclient_test_DEPENDENCIES)
|
||||||
@rm -f tunclient_test$(EXEEXT)
|
@rm -f tunclient_test$(EXEEXT)
|
||||||
$(AM_V_CXXLD)$(CXXLINK) $(tunclient_test_OBJECTS) $(tunclient_test_LDADD) $(LIBS)
|
$(AM_V_CXXLD)$(CXXLINK) $(tunclient_test_OBJECTS) $(tunclient_test_LDADD) $(LIBS)
|
||||||
|
|||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
}
|
||||||
|
|
||||||
|
#include <expected>
|
||||||
|
#include <string>
|
||||||
|
#include <cstring>
|
||||||
|
#include <iostream>
|
||||||
|
#include <format>
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
#include <header.hpp>
|
||||||
|
|
||||||
|
Header::Header(const uint32_t ipSize) {
|
||||||
|
pSize = ipSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
Header::Header(void) {
|
||||||
|
pSize = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Header::Encode() {
|
||||||
|
std::string buffer, tmp;
|
||||||
|
auto magic = htonl(MAGIC);
|
||||||
|
tmp = std::string(reinterpret_cast<const char*>(&magic), sizeof(magic));
|
||||||
|
buffer.append(tmp);
|
||||||
|
|
||||||
|
auto size = htonl(pSize);
|
||||||
|
tmp = std::string(reinterpret_cast<const char*>(&size), sizeof(size));
|
||||||
|
buffer.append(tmp);
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::expected<void, std::string> Header::Decode(const std::string rawHeader) {
|
||||||
|
uint32_t tmp;
|
||||||
|
std::memcpy(&tmp, rawHeader.data(), sizeof(uint32_t));
|
||||||
|
auto magic = ntohl(tmp);
|
||||||
|
if (magic != MAGIC) {
|
||||||
|
return std::unexpected("Wrong magic code");
|
||||||
|
}
|
||||||
|
std::memcpy(&tmp, rawHeader.data() + sizeof(uint32_t), sizeof(uint32_t));
|
||||||
|
pSize = ntohl(tmp);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t Header::PacketSize() {
|
||||||
|
return pSize;
|
||||||
|
}
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
const uint32_t MAGIC = 0xABBA;
|
||||||
|
|
||||||
|
class Header {
|
||||||
|
private:
|
||||||
|
uint32_t pSize = 0;
|
||||||
|
public:
|
||||||
|
Header(const uint32_t pSize);
|
||||||
|
Header(void);
|
||||||
|
std::string Encode(void);
|
||||||
|
std::expected<void, std::string> Decode(const std::string buffer);
|
||||||
|
uint32_t PacketSize(void);
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
#include <expected>
|
||||||
|
#include <string>
|
||||||
|
#include <cstring>
|
||||||
|
#include <iostream>
|
||||||
|
#include <format>
|
||||||
|
|
||||||
|
#include <header.hpp>
|
||||||
|
|
||||||
|
int main(int argc, char** argv) {
|
||||||
|
uint32_t size =
|
||||||
|
Header primary(1021);
|
||||||
|
auto rawHeader = primary.Encode();
|
||||||
|
|
||||||
|
Header second;
|
||||||
|
second.Decode(rawHeader);
|
||||||
|
|
||||||
|
std::cout << std::format("{}\n", second.PacketSize());
|
||||||
|
assert
|
||||||
|
}
|
||||||
+587
-509
File diff suppressed because it is too large
Load Diff
+644
-571
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
package control;
|
package control;
|
||||||
option optimize_for = LITE_RUNTIME;
|
//option optimize_for = LITE_RUNTIME;
|
||||||
option cc_generic_services = false;
|
//option cc_generic_services = false;
|
||||||
|
|
||||||
message Header {
|
message Header {
|
||||||
Meta meta = 1;
|
Meta meta = 1;
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
|
#include <expected>
|
||||||
|
#include <iostream>
|
||||||
|
#include <span>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
class RPCClient {
|
||||||
|
};
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
|
#include <expected>
|
||||||
|
#include <iostream>
|
||||||
|
#include <span>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include <google/protobuf/message.h>
|
||||||
|
|
||||||
|
#include <rcpclient.hpp>
|
||||||
|
|
||||||
|
//google::protobuf::Message
|
||||||
|
|
||||||
|
std::expected<void, std::string> Transaction(const google::protobuf::Message& m) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
+18
-19
@@ -15,6 +15,12 @@ extern "C" {
|
|||||||
#include <span>
|
#include <span>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
|
#include <expected>
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
|
||||||
#include <tcpclient.hpp>
|
#include <tcpclient.hpp>
|
||||||
|
|
||||||
TCPClient::TCPClient() {
|
TCPClient::TCPClient() {
|
||||||
@@ -25,9 +31,9 @@ TCPClient::TCPClient() {
|
|||||||
std::expected<void, std::string> TCPClient::Connect(const std::string naddress, const int port) {
|
std::expected<void, std::string> TCPClient::Connect(const std::string naddress, const int port) {
|
||||||
|
|
||||||
struct sockaddr_in sa;
|
struct sockaddr_in sa;
|
||||||
if (inet_pton(AF_INET, address.c_str(), &(sa.sin_addr)) == 1) {
|
if (inet_pton(AF_INET, naddress.c_str(), &(sa.sin_addr)) == 1) {
|
||||||
family = AF_INET;
|
family = AF_INET;
|
||||||
} else if (inet_pton(AF_INET6, address.c_str(), &(sa.sin_addr)) == 1) {
|
} else if (inet_pton(AF_INET6, naddress.c_str(), &(sa.sin_addr)) == 1) {
|
||||||
family = AF_INET6;
|
family = AF_INET6;
|
||||||
} else {
|
} else {
|
||||||
int errnocopy = errno;
|
int errnocopy = errno;
|
||||||
@@ -44,7 +50,7 @@ std::expected<void, std::string> TCPClient::Connect(const std::string naddress,
|
|||||||
|
|
||||||
serv_addr.sin_family = AF_INET;
|
serv_addr.sin_family = AF_INET;
|
||||||
serv_addr.sin_port = htons(port);
|
serv_addr.sin_port = htons(port);
|
||||||
const char* addr = address.data();
|
const char* addr = naddress.data();
|
||||||
if (inet_pton(AF_INET, addr, &serv_addr.sin_addr) <= 0) {
|
if (inet_pton(AF_INET, addr, &serv_addr.sin_addr) <= 0) {
|
||||||
return std::unexpected("Invalid server IP address");
|
return std::unexpected("Invalid server IP address");
|
||||||
}
|
}
|
||||||
@@ -65,15 +71,6 @@ std::expected<void, std::string> TCPClient::Connect(const std::string naddress,
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::expected<int, std::string> TCPClient::Write(std::span<const std::byte> payload) {
|
|
||||||
int n = 0;
|
|
||||||
if ((n = write(sock, payload.data(), payload.size())) < 0) {
|
|
||||||
return std::unexpected("Write error");
|
|
||||||
}
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::expected<int, std::string> TCPClient::Write(std::string payload) {
|
std::expected<int, std::string> TCPClient::Write(std::string payload) {
|
||||||
int n = 0;
|
int n = 0;
|
||||||
if ((n = write(sock, payload.data(), payload.size())) < 0) {
|
if ((n = write(sock, payload.data(), payload.size())) < 0) {
|
||||||
@@ -82,16 +79,18 @@ std::expected<int, std::string> TCPClient::Write(std::string payload) {
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::expected<int, std::string> TCPClient::Read(std::vector<std::byte>* buffer) {
|
std::expected<int, std::string> TCPClient::Read(std::string& res, int size) {
|
||||||
int n = 0;
|
char buffer[size + 1];
|
||||||
if ((n = read(sock, buffer->data(), buffer->size())) < 0) {
|
memset(&buffer, 0, size + 1);
|
||||||
|
int rsize = 0;
|
||||||
|
if ((rsize = read(sock, &buffer, size)) < 0) {
|
||||||
return std::unexpected("Read error");
|
return std::unexpected("Read error");
|
||||||
}
|
}
|
||||||
return n;
|
res.append(buffer, rsize);
|
||||||
|
return rsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::expected<int, std::string> TCPClient::Read(std::vector<uint8_t>* buffer) {
|
TCPClient::~TCPClient() {
|
||||||
return read(sock, buffer->data(), buffer->size());
|
close(sock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+3
-10
@@ -10,16 +10,9 @@ private:
|
|||||||
int sock;
|
int sock;
|
||||||
int family;
|
int family;
|
||||||
public:
|
public:
|
||||||
TCPClient();
|
TCPClient(void);
|
||||||
std::expected<void, std::string> Connect(std::string address, const int port);
|
std::expected<void, std::string> Connect(std::string address, const int port);
|
||||||
|
|
||||||
std::expected<int, std::string> Write(std::span<const std::byte> payload);
|
|
||||||
std::expected<int, std::string> Write(std::string payload);
|
std::expected<int, std::string> Write(std::string payload);
|
||||||
|
std::expected<int, std::string> Read(std::string& buffer, int size);
|
||||||
std::expected<int, std::string> Read(std::vector<std::byte>* buffer);
|
~TCPClient(void);
|
||||||
std::expected<int, std::string> Read(std::vector<uint8_t>* buffer);
|
|
||||||
|
|
||||||
~TCPClient() {
|
|
||||||
close(sock);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|||||||
+4
-6
@@ -20,15 +20,13 @@ int main( int argc, char** argv) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<uint8_t> buffer;
|
std::string buffer;
|
||||||
buffer.resize(2048);
|
auto rSize = client.Read(buffer, 8);
|
||||||
auto rSize = client.Read(&buffer);
|
|
||||||
if (!rSize) {
|
if (!rSize) {
|
||||||
std::cerr << rSize.error() << std::endl;
|
std::cerr << rSize.error() << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
std::cout << rSize.value() << std::endl;
|
std::cout << std::format("read {} bytes", rSize.value()) << std::endl;
|
||||||
|
std::cout << std::format("{}", buffer) << std::endl;
|
||||||
|
|
||||||
std::string s(buffer.begin(), buffer.end());
|
|
||||||
std::cout << std::format("{}", s) << std::endl;
|
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-20
@@ -13,37 +13,37 @@ extern "C" {
|
|||||||
#include <header.hpp>
|
#include <header.hpp>
|
||||||
|
|
||||||
Header::Header(const uint32_t ipSize) {
|
Header::Header(const uint32_t ipSize) {
|
||||||
pSize = ipSize;
|
pSize = ipSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
Header::Header(void) {
|
Header::Header(void) {
|
||||||
pSize = 0;
|
pSize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Header::Encode() {
|
std::string Header::Encode() {
|
||||||
std::string buffer, tmp;
|
std::string buffer, tmp;
|
||||||
auto magic = htonl(MAGIC);
|
auto magic = htonl(MAGIC);
|
||||||
tmp = std::string(reinterpret_cast<const char*>(&magic), sizeof(magic));
|
tmp = std::string(reinterpret_cast<const char*>(&magic), sizeof(magic));
|
||||||
buffer.append(tmp);
|
buffer.append(tmp);
|
||||||
|
|
||||||
auto size = htonl(pSize);
|
auto size = htonl(pSize);
|
||||||
tmp = std::string(reinterpret_cast<const char*>(&size), sizeof(size));
|
tmp = std::string(reinterpret_cast<const char*>(&size), sizeof(size));
|
||||||
buffer.append(tmp);
|
buffer.append(tmp);
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::expected<void, std::string> Header::Decode(const std::string rawHeader) {
|
std::expected<void, std::string> Header::Decode(const std::string rawHeader) {
|
||||||
uint32_t tmp;
|
uint32_t tmp;
|
||||||
std::memcpy(&tmp, rawHeader.data(), sizeof(uint32_t));
|
std::memcpy(&tmp, rawHeader.data(), sizeof(uint32_t));
|
||||||
auto magic = ntohl(tmp);
|
auto magic = ntohl(tmp);
|
||||||
if (magic != MAGIC) {
|
if (magic != MAGIC) {
|
||||||
return std::unexpected("Wrong magic code");
|
return std::unexpected("Wrong magic code");
|
||||||
}
|
}
|
||||||
std::memcpy(&tmp, rawHeader.data() + sizeof(uint32_t), sizeof(uint32_t));
|
std::memcpy(&tmp, rawHeader.data() + sizeof(uint32_t), sizeof(uint32_t));
|
||||||
pSize = ntohl(tmp);
|
pSize = ntohl(tmp);
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t Header::PacketSize() {
|
uint32_t Header::PacketSize() {
|
||||||
return pSize;
|
return pSize;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ const uint32_t MAGIC = 0xABBA;
|
|||||||
|
|
||||||
class Header {
|
class Header {
|
||||||
private:
|
private:
|
||||||
uint32_t pSize = 0;
|
uint32_t pSize = 0;
|
||||||
public:
|
public:
|
||||||
Header(const uint32_t pSize);
|
Header(const uint32_t pSize);
|
||||||
Header(void);
|
Header(void);
|
||||||
std::string Encode(void);
|
std::string Encode(void);
|
||||||
std::expected<void, std::string> Decode(const std::string buffer);
|
std::expected<void, std::string> Decode(const std::string buffer);
|
||||||
uint32_t PacketSize(void);
|
uint32_t PacketSize(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -8,13 +8,13 @@
|
|||||||
#include <header.hpp>
|
#include <header.hpp>
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
uint32_t size =
|
uint32_t size =
|
||||||
Header primary(1021);
|
Header primary(1021);
|
||||||
auto rawHeader = primary.Encode();
|
auto rawHeader = primary.Encode();
|
||||||
|
|
||||||
Header second;
|
Header second;
|
||||||
second.Decode(rawHeader);
|
second.Decode(rawHeader);
|
||||||
|
|
||||||
std::cout << std::format("{}\n", second.PacketSize());
|
std::cout << std::format("{}\n", second.PacketSize());
|
||||||
assert
|
assert
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Packet {
|
||||||
|
std::string meta;
|
||||||
|
std::string payload;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user