From ac88dbd051587f83dcd42b443c2fb4a2b0647fc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=91=D0=BE=D1=80=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Mon, 27 Apr 2026 11:53:11 +0200 Subject: [PATCH] working commit --- Makefile | 86 +++++++++++--------- Makefile.am | 42 +++++----- Makefile.in | 86 +++++++++++--------- rpcclient.cpp | 34 ++++---- rpcclient.hpp | 7 +- rpcclient_memtest.cpp | 47 +++++++++++ rpcclient_test.cpp | 18 ++-- service.cpp | 69 ++++++++++++++-- service.hpp | 4 +- service_test.cpp | 2 +- tcpclient.hpp | 8 +- fakeconnect.cpp => testconnect.cpp | 10 +-- fakeconnect.hpp => testconnect.hpp | 6 +- fakeconnect_test.cpp => testconnect_test.cpp | 10 +-- 14 files changed, 281 insertions(+), 148 deletions(-) create mode 100644 rpcclient_memtest.cpp rename fakeconnect.cpp => testconnect.cpp (84%) rename fakeconnect.hpp => testconnect.hpp (81%) rename fakeconnect_test.cpp => testconnect_test.cpp (90%) diff --git a/Makefile b/Makefile index 9f21779..8632856 100644 --- a/Makefile +++ b/Makefile @@ -91,7 +91,7 @@ POST_UNINSTALL = : sbin_PROGRAMS = helmetd$(EXEEXT) noinst_PROGRAMS = tcpclient_test$(EXEEXT) udpclient_test$(EXEEXT) \ service_test$(EXEEXT) tunclient_test$(EXEEXT) \ - rpcclient_test$(EXEEXT) fakeconnect_test$(EXEEXT) + rpcclient_test$(EXEEXT) testconnect_test$(EXEEXT) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac @@ -107,34 +107,36 @@ CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" PROGRAMS = $(noinst_PROGRAMS) $(sbin_PROGRAMS) -am_fakeconnect_test_OBJECTS = fakeconnect_test.$(OBJEXT) \ - rpcclient.$(OBJEXT) rpcheader.$(OBJEXT) netclient.$(OBJEXT) \ - nethandler.$(OBJEXT) fakeconnect.$(OBJEXT) \ +am_helmetd_OBJECTS = helmetd.$(OBJEXT) interface.$(OBJEXT) \ + iprouter.$(OBJEXT) netclient.$(OBJEXT) resolver.$(OBJEXT) \ + rpcclient.$(OBJEXT) rpcheader.$(OBJEXT) service.$(OBJEXT) \ + tcpclient.$(OBJEXT) tunclient.$(OBJEXT) udpclient.$(OBJEXT) \ control.pb.$(OBJEXT) logger.$(OBJEXT) -fakeconnect_test_OBJECTS = $(am_fakeconnect_test_OBJECTS) -fakeconnect_test_LDADD = $(LDADD) -am_helmetd_OBJECTS = helmetd.$(OBJEXT) tunclient.$(OBJEXT) \ - service.$(OBJEXT) interface.$(OBJEXT) udpclient.$(OBJEXT) \ - resolver.$(OBJEXT) iprouter.$(OBJEXT) netclient.$(OBJEXT) \ - tcpclient.$(OBJEXT) rpcclient.$(OBJEXT) control.pb.$(OBJEXT) helmetd_OBJECTS = $(am_helmetd_OBJECTS) helmetd_LDADD = $(LDADD) am_rpcclient_test_OBJECTS = rpcclient_test.$(OBJEXT) \ rpcclient.$(OBJEXT) rpcheader.$(OBJEXT) netclient.$(OBJEXT) \ - nethandler.$(OBJEXT) fakeconnect.$(OBJEXT) \ + nethandler.$(OBJEXT) testconnect.$(OBJEXT) tcpclient.$(OBJEXT) \ control.pb.$(OBJEXT) rpcclient_test_OBJECTS = $(am_rpcclient_test_OBJECTS) rpcclient_test_LDADD = $(LDADD) am_service_test_OBJECTS = service_test.$(OBJEXT) tunclient.$(OBJEXT) \ - service.$(OBJEXT) interface.$(OBJEXT) + service.$(OBJEXT) interface.$(OBJEXT) rpcheader.$(OBJEXT) \ + logger.$(OBJEXT) control.pb.$(OBJEXT) service_test_OBJECTS = $(am_service_test_OBJECTS) service_test_LDADD = $(LDADD) am_tcpclient_test_OBJECTS = resolver.$(OBJEXT) netclient.$(OBJEXT) \ tcpclient.$(OBJEXT) tcpclient_test.$(OBJEXT) tcpclient_test_OBJECTS = $(am_tcpclient_test_OBJECTS) tcpclient_test_LDADD = $(LDADD) +am_testconnect_test_OBJECTS = testconnect_test.$(OBJEXT) \ + rpcclient.$(OBJEXT) rpcheader.$(OBJEXT) netclient.$(OBJEXT) \ + nethandler.$(OBJEXT) testconnect.$(OBJEXT) \ + control.pb.$(OBJEXT) logger.$(OBJEXT) +testconnect_test_OBJECTS = $(am_testconnect_test_OBJECTS) +testconnect_test_LDADD = $(LDADD) am_tunclient_test_OBJECTS = tunclient_test.$(OBJEXT) \ - tunclient.$(OBJEXT) service.$(OBJEXT) interface.$(OBJEXT) + tunclient.$(OBJEXT) interface.$(OBJEXT) tunclient_test_OBJECTS = $(am_tunclient_test_OBJECTS) tunclient_test_LDADD = $(LDADD) am_udpclient_test_OBJECTS = resolver.$(OBJEXT) udpclient.$(OBJEXT) \ @@ -181,13 +183,13 @@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(fakeconnect_test_SOURCES) $(helmetd_SOURCES) \ - $(rpcclient_test_SOURCES) $(service_test_SOURCES) \ - $(tcpclient_test_SOURCES) $(tunclient_test_SOURCES) \ +SOURCES = $(helmetd_SOURCES) $(rpcclient_test_SOURCES) \ + $(service_test_SOURCES) $(tcpclient_test_SOURCES) \ + $(testconnect_test_SOURCES) $(tunclient_test_SOURCES) \ $(udpclient_test_SOURCES) -DIST_SOURCES = $(fakeconnect_test_SOURCES) $(helmetd_SOURCES) \ - $(rpcclient_test_SOURCES) $(service_test_SOURCES) \ - $(tcpclient_test_SOURCES) $(tunclient_test_SOURCES) \ +DIST_SOURCES = $(helmetd_SOURCES) $(rpcclient_test_SOURCES) \ + $(service_test_SOURCES) $(tcpclient_test_SOURCES) \ + $(testconnect_test_SOURCES) $(tunclient_test_SOURCES) \ $(udpclient_test_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ @@ -252,7 +254,7 @@ CSCOPE = cscope CTAGS = ctags CXX = g++ CXXDEPMODE = depmode=none -CXXFLAGS = -g -std=c++23 -Wall -I. -pthread -D_GNU_SOURCE=1 +CXXFLAGS = -std=c++23 -Wall -I. -pthread -D_GNU_SOURCE=1 CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps @@ -335,26 +337,30 @@ top_builddir = . top_srcdir = . AUTOMAKE_OPTIONS = foreign no-dependencies no-installinfo subdir-objects helmetd_SOURCES = helmetd.cpp \ - tunclient.cpp tunclient.hpp \ - service.cpp service.hpp \ interface.cpp interface.hpp \ - udpclient.cpp udpclient.hpp \ - resolver.cpp resolver.hpp \ iprouter.cpp iprouter.hpp \ netclient.cpp netclient.hpp \ - tcpclient.cpp tcpclient.hpp \ + resolver.cpp resolver.hpp \ rpcclient.cpp rpcclient.hpp \ - control.pb.cc control.pb.h + rpcheader.cpp rpcheader.hpp \ + service.cpp service.hpp \ + tcpclient.cpp tcpclient.hpp \ + tunclient.cpp tunclient.hpp \ + udpclient.cpp udpclient.hpp \ + control.pb.cc control.pb.h \ + logger.cpp logger.hpp tunclient_test_SOURCES = tunclient_test.cpp \ tunclient.cpp tunclient.hpp \ - service.cpp service.hpp \ interface.cpp interface.hpp service_test_SOURCES = service_test.cpp \ tunclient.cpp tunclient.hpp \ service.cpp service.hpp \ - interface.cpp interface.hpp + interface.cpp interface.hpp \ + rpcheader.cpp rpcheader.hpp \ + logger.cpp logger.hpp \ + control.pb.cc control.pb.h udpclient_test_SOURCES = \ resolver.cpp resolver.hpp \ @@ -372,15 +378,16 @@ rpcclient_test_SOURCES = rpcclient_test.cpp \ rpcheader.cpp rpcheader.hpp \ netclient.cpp netclient.hpp \ nethandler.cpp nethandler.hpp \ - fakeconnect.cpp fakeconnect.hpp \ + testconnect.cpp testconnect.hpp \ + tcpclient.cpp tcpclient.hpp \ control.pb.cc control.pb.h -fakeconnect_test_SOURCES = fakeconnect_test.cpp \ +testconnect_test_SOURCES = testconnect_test.cpp \ rpcclient.cpp rpcclient.hpp \ rpcheader.cpp rpcheader.hpp \ netclient.cpp netclient.hpp \ nethandler.cpp nethandler.hpp \ - fakeconnect.cpp fakeconnect.hpp \ + testconnect.cpp testconnect.hpp \ control.pb.cc control.pb.h \ logger.cpp logger.hpp @@ -484,10 +491,6 @@ uninstall-sbinPROGRAMS: clean-sbinPROGRAMS: -$(am__rm_f) $(sbin_PROGRAMS) -fakeconnect_test$(EXEEXT): $(fakeconnect_test_OBJECTS) $(fakeconnect_test_DEPENDENCIES) $(EXTRA_fakeconnect_test_DEPENDENCIES) - @rm -f fakeconnect_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(fakeconnect_test_OBJECTS) $(fakeconnect_test_LDADD) $(LIBS) - helmetd$(EXEEXT): $(helmetd_OBJECTS) $(helmetd_DEPENDENCIES) $(EXTRA_helmetd_DEPENDENCIES) @rm -f helmetd$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(helmetd_OBJECTS) $(helmetd_LDADD) $(LIBS) @@ -504,6 +507,10 @@ tcpclient_test$(EXEEXT): $(tcpclient_test_OBJECTS) $(tcpclient_test_DEPENDENCIES @rm -f tcpclient_test$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(tcpclient_test_OBJECTS) $(tcpclient_test_LDADD) $(LIBS) +testconnect_test$(EXEEXT): $(testconnect_test_OBJECTS) $(testconnect_test_DEPENDENCIES) $(EXTRA_testconnect_test_DEPENDENCIES) + @rm -f testconnect_test$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(testconnect_test_OBJECTS) $(testconnect_test_LDADD) $(LIBS) + tunclient_test$(EXEEXT): $(tunclient_test_OBJECTS) $(tunclient_test_DEPENDENCIES) $(EXTRA_tunclient_test_DEPENDENCIES) @rm -f tunclient_test$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(tunclient_test_OBJECTS) $(tunclient_test_LDADD) $(LIBS) @@ -890,11 +897,12 @@ uninstall-am: uninstall-sbinPROGRAMS .PRECIOUS: Makefile -test: fakeconnect_test - ./fakeconnect_test +#test: testconnect_test +# ./testconnect_test +#test: rpcclient_test +# ./rpcclient_test -run: helmetd - ./helmetd +test: service_test rpcclient_test proto: $(PROTOC) --cpp_out=. control.proto diff --git a/Makefile.am b/Makefile.am index 97a29ad..996e2d5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,24 +1,25 @@ AUTOMAKE_OPTIONS = foreign no-dependencies no-installinfo subdir-objects -CXXFLAGS = -g -std=c++23 -Wall -I. -pthread -D_GNU_SOURCE=1 +CXXFLAGS = -std=c++23 -Wall -I. -pthread -D_GNU_SOURCE=1 LDFLAGS = -pthread LIBS = -Wl,--as-need -lprotobuf sbin_PROGRAMS = helmetd helmetd_SOURCES = helmetd.cpp \ - tunclient.cpp tunclient.hpp \ - service.cpp service.hpp \ interface.cpp interface.hpp \ - udpclient.cpp udpclient.hpp \ - resolver.cpp resolver.hpp \ iprouter.cpp iprouter.hpp \ netclient.cpp netclient.hpp \ - tcpclient.cpp tcpclient.hpp \ + resolver.cpp resolver.hpp \ rpcclient.cpp rpcclient.hpp \ - control.pb.cc control.pb.h - + rpcheader.cpp rpcheader.hpp \ + service.cpp service.hpp \ + tcpclient.cpp tcpclient.hpp \ + tunclient.cpp tunclient.hpp \ + udpclient.cpp udpclient.hpp \ + control.pb.cc control.pb.h \ + logger.cpp logger.hpp noinst_PROGRAMS = \ tcpclient_test \ @@ -26,18 +27,19 @@ noinst_PROGRAMS = \ service_test \ tunclient_test \ rpcclient_test \ - fakeconnect_test + testconnect_test tunclient_test_SOURCES = tunclient_test.cpp \ tunclient.cpp tunclient.hpp \ - service.cpp service.hpp \ interface.cpp interface.hpp service_test_SOURCES = service_test.cpp \ tunclient.cpp tunclient.hpp \ service.cpp service.hpp \ - interface.cpp interface.hpp - + interface.cpp interface.hpp \ + rpcheader.cpp rpcheader.hpp \ + logger.cpp logger.hpp \ + control.pb.cc control.pb.h udpclient_test_SOURCES = \ resolver.cpp resolver.hpp \ @@ -55,24 +57,26 @@ rpcclient_test_SOURCES = rpcclient_test.cpp \ rpcheader.cpp rpcheader.hpp \ netclient.cpp netclient.hpp \ nethandler.cpp nethandler.hpp \ - fakeconnect.cpp fakeconnect.hpp \ + testconnect.cpp testconnect.hpp \ + tcpclient.cpp tcpclient.hpp \ control.pb.cc control.pb.h -fakeconnect_test_SOURCES = fakeconnect_test.cpp \ +testconnect_test_SOURCES = testconnect_test.cpp \ rpcclient.cpp rpcclient.hpp \ rpcheader.cpp rpcheader.hpp \ netclient.cpp netclient.hpp \ nethandler.cpp nethandler.hpp \ - fakeconnect.cpp fakeconnect.hpp \ + testconnect.cpp testconnect.hpp \ control.pb.cc control.pb.h \ logger.cpp logger.hpp -test: fakeconnect_test - ./fakeconnect_test +#test: testconnect_test +# ./testconnect_test +#test: rpcclient_test +# ./rpcclient_test -run: helmetd - ./helmetd +test: service_test rpcclient_test proto: $(PROTOC) --cpp_out=. control.proto diff --git a/Makefile.in b/Makefile.in index dee94b3..339996f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -91,7 +91,7 @@ POST_UNINSTALL = : sbin_PROGRAMS = helmetd$(EXEEXT) noinst_PROGRAMS = tcpclient_test$(EXEEXT) udpclient_test$(EXEEXT) \ service_test$(EXEEXT) tunclient_test$(EXEEXT) \ - rpcclient_test$(EXEEXT) fakeconnect_test$(EXEEXT) + rpcclient_test$(EXEEXT) testconnect_test$(EXEEXT) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac @@ -107,34 +107,36 @@ CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" PROGRAMS = $(noinst_PROGRAMS) $(sbin_PROGRAMS) -am_fakeconnect_test_OBJECTS = fakeconnect_test.$(OBJEXT) \ - rpcclient.$(OBJEXT) rpcheader.$(OBJEXT) netclient.$(OBJEXT) \ - nethandler.$(OBJEXT) fakeconnect.$(OBJEXT) \ +am_helmetd_OBJECTS = helmetd.$(OBJEXT) interface.$(OBJEXT) \ + iprouter.$(OBJEXT) netclient.$(OBJEXT) resolver.$(OBJEXT) \ + rpcclient.$(OBJEXT) rpcheader.$(OBJEXT) service.$(OBJEXT) \ + tcpclient.$(OBJEXT) tunclient.$(OBJEXT) udpclient.$(OBJEXT) \ control.pb.$(OBJEXT) logger.$(OBJEXT) -fakeconnect_test_OBJECTS = $(am_fakeconnect_test_OBJECTS) -fakeconnect_test_LDADD = $(LDADD) -am_helmetd_OBJECTS = helmetd.$(OBJEXT) tunclient.$(OBJEXT) \ - service.$(OBJEXT) interface.$(OBJEXT) udpclient.$(OBJEXT) \ - resolver.$(OBJEXT) iprouter.$(OBJEXT) netclient.$(OBJEXT) \ - tcpclient.$(OBJEXT) rpcclient.$(OBJEXT) control.pb.$(OBJEXT) helmetd_OBJECTS = $(am_helmetd_OBJECTS) helmetd_LDADD = $(LDADD) am_rpcclient_test_OBJECTS = rpcclient_test.$(OBJEXT) \ rpcclient.$(OBJEXT) rpcheader.$(OBJEXT) netclient.$(OBJEXT) \ - nethandler.$(OBJEXT) fakeconnect.$(OBJEXT) \ + nethandler.$(OBJEXT) testconnect.$(OBJEXT) tcpclient.$(OBJEXT) \ control.pb.$(OBJEXT) rpcclient_test_OBJECTS = $(am_rpcclient_test_OBJECTS) rpcclient_test_LDADD = $(LDADD) am_service_test_OBJECTS = service_test.$(OBJEXT) tunclient.$(OBJEXT) \ - service.$(OBJEXT) interface.$(OBJEXT) + service.$(OBJEXT) interface.$(OBJEXT) rpcheader.$(OBJEXT) \ + logger.$(OBJEXT) control.pb.$(OBJEXT) service_test_OBJECTS = $(am_service_test_OBJECTS) service_test_LDADD = $(LDADD) am_tcpclient_test_OBJECTS = resolver.$(OBJEXT) netclient.$(OBJEXT) \ tcpclient.$(OBJEXT) tcpclient_test.$(OBJEXT) tcpclient_test_OBJECTS = $(am_tcpclient_test_OBJECTS) tcpclient_test_LDADD = $(LDADD) +am_testconnect_test_OBJECTS = testconnect_test.$(OBJEXT) \ + rpcclient.$(OBJEXT) rpcheader.$(OBJEXT) netclient.$(OBJEXT) \ + nethandler.$(OBJEXT) testconnect.$(OBJEXT) \ + control.pb.$(OBJEXT) logger.$(OBJEXT) +testconnect_test_OBJECTS = $(am_testconnect_test_OBJECTS) +testconnect_test_LDADD = $(LDADD) am_tunclient_test_OBJECTS = tunclient_test.$(OBJEXT) \ - tunclient.$(OBJEXT) service.$(OBJEXT) interface.$(OBJEXT) + tunclient.$(OBJEXT) interface.$(OBJEXT) tunclient_test_OBJECTS = $(am_tunclient_test_OBJECTS) tunclient_test_LDADD = $(LDADD) am_udpclient_test_OBJECTS = resolver.$(OBJEXT) udpclient.$(OBJEXT) \ @@ -181,13 +183,13 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(fakeconnect_test_SOURCES) $(helmetd_SOURCES) \ - $(rpcclient_test_SOURCES) $(service_test_SOURCES) \ - $(tcpclient_test_SOURCES) $(tunclient_test_SOURCES) \ +SOURCES = $(helmetd_SOURCES) $(rpcclient_test_SOURCES) \ + $(service_test_SOURCES) $(tcpclient_test_SOURCES) \ + $(testconnect_test_SOURCES) $(tunclient_test_SOURCES) \ $(udpclient_test_SOURCES) -DIST_SOURCES = $(fakeconnect_test_SOURCES) $(helmetd_SOURCES) \ - $(rpcclient_test_SOURCES) $(service_test_SOURCES) \ - $(tcpclient_test_SOURCES) $(tunclient_test_SOURCES) \ +DIST_SOURCES = $(helmetd_SOURCES) $(rpcclient_test_SOURCES) \ + $(service_test_SOURCES) $(tcpclient_test_SOURCES) \ + $(testconnect_test_SOURCES) $(tunclient_test_SOURCES) \ $(udpclient_test_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ @@ -252,7 +254,7 @@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = -g -std=c++23 -Wall -I. -pthread -D_GNU_SOURCE=1 +CXXFLAGS = -std=c++23 -Wall -I. -pthread -D_GNU_SOURCE=1 CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -335,26 +337,30 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign no-dependencies no-installinfo subdir-objects helmetd_SOURCES = helmetd.cpp \ - tunclient.cpp tunclient.hpp \ - service.cpp service.hpp \ interface.cpp interface.hpp \ - udpclient.cpp udpclient.hpp \ - resolver.cpp resolver.hpp \ iprouter.cpp iprouter.hpp \ netclient.cpp netclient.hpp \ - tcpclient.cpp tcpclient.hpp \ + resolver.cpp resolver.hpp \ rpcclient.cpp rpcclient.hpp \ - control.pb.cc control.pb.h + rpcheader.cpp rpcheader.hpp \ + service.cpp service.hpp \ + tcpclient.cpp tcpclient.hpp \ + tunclient.cpp tunclient.hpp \ + udpclient.cpp udpclient.hpp \ + control.pb.cc control.pb.h \ + logger.cpp logger.hpp tunclient_test_SOURCES = tunclient_test.cpp \ tunclient.cpp tunclient.hpp \ - service.cpp service.hpp \ interface.cpp interface.hpp service_test_SOURCES = service_test.cpp \ tunclient.cpp tunclient.hpp \ service.cpp service.hpp \ - interface.cpp interface.hpp + interface.cpp interface.hpp \ + rpcheader.cpp rpcheader.hpp \ + logger.cpp logger.hpp \ + control.pb.cc control.pb.h udpclient_test_SOURCES = \ resolver.cpp resolver.hpp \ @@ -372,15 +378,16 @@ rpcclient_test_SOURCES = rpcclient_test.cpp \ rpcheader.cpp rpcheader.hpp \ netclient.cpp netclient.hpp \ nethandler.cpp nethandler.hpp \ - fakeconnect.cpp fakeconnect.hpp \ + testconnect.cpp testconnect.hpp \ + tcpclient.cpp tcpclient.hpp \ control.pb.cc control.pb.h -fakeconnect_test_SOURCES = fakeconnect_test.cpp \ +testconnect_test_SOURCES = testconnect_test.cpp \ rpcclient.cpp rpcclient.hpp \ rpcheader.cpp rpcheader.hpp \ netclient.cpp netclient.hpp \ nethandler.cpp nethandler.hpp \ - fakeconnect.cpp fakeconnect.hpp \ + testconnect.cpp testconnect.hpp \ control.pb.cc control.pb.h \ logger.cpp logger.hpp @@ -484,10 +491,6 @@ uninstall-sbinPROGRAMS: clean-sbinPROGRAMS: -$(am__rm_f) $(sbin_PROGRAMS) -fakeconnect_test$(EXEEXT): $(fakeconnect_test_OBJECTS) $(fakeconnect_test_DEPENDENCIES) $(EXTRA_fakeconnect_test_DEPENDENCIES) - @rm -f fakeconnect_test$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(fakeconnect_test_OBJECTS) $(fakeconnect_test_LDADD) $(LIBS) - helmetd$(EXEEXT): $(helmetd_OBJECTS) $(helmetd_DEPENDENCIES) $(EXTRA_helmetd_DEPENDENCIES) @rm -f helmetd$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(helmetd_OBJECTS) $(helmetd_LDADD) $(LIBS) @@ -504,6 +507,10 @@ tcpclient_test$(EXEEXT): $(tcpclient_test_OBJECTS) $(tcpclient_test_DEPENDENCIES @rm -f tcpclient_test$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(tcpclient_test_OBJECTS) $(tcpclient_test_LDADD) $(LIBS) +testconnect_test$(EXEEXT): $(testconnect_test_OBJECTS) $(testconnect_test_DEPENDENCIES) $(EXTRA_testconnect_test_DEPENDENCIES) + @rm -f testconnect_test$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(testconnect_test_OBJECTS) $(testconnect_test_LDADD) $(LIBS) + tunclient_test$(EXEEXT): $(tunclient_test_OBJECTS) $(tunclient_test_DEPENDENCIES) $(EXTRA_tunclient_test_DEPENDENCIES) @rm -f tunclient_test$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(tunclient_test_OBJECTS) $(tunclient_test_LDADD) $(LIBS) @@ -890,11 +897,12 @@ uninstall-am: uninstall-sbinPROGRAMS .PRECIOUS: Makefile -test: fakeconnect_test - ./fakeconnect_test +#test: testconnect_test +# ./testconnect_test +#test: rpcclient_test +# ./rpcclient_test -run: helmetd - ./helmetd +test: service_test rpcclient_test proto: $(PROTOC) --cpp_out=. control.proto diff --git a/rpcclient.cpp b/rpcclient.cpp index 76bfaf0..5673266 100644 --- a/rpcclient.cpp +++ b/rpcclient.cpp @@ -12,35 +12,33 @@ #include #include +#include - -void Router(std::string& req, std::string& res) { - - std::string rawResult; - control::HelloResult helloRes; - helloRes.Clear(); - helloRes.set_message("foobare"); - helloRes.SerializeToString(&rawResult); - res.append(rawResult); - +RPCClient::RPCClient(NetClient& iconnector) { + connector = &iconnector; } -std::expected RPCClient::Transaction(const pbMessage& pbReq, pbMessage& pbRes) { - +std::expected RPCClient::DoTransaction(const pbMessage& pbReq, pbMessage& pbRes) { std::string rawRequest; pbReq.SerializeToString(&rawRequest); - //RPCHeader header(rawRequest.size()); - //auto rawHeader = header.Encode(); + RPCHeader reqHeader(rawRequest.size()); + auto rawReqHeader = reqHeader.Encode(); std::string reqPacket; - //request.append(rawHeader); + reqPacket.append(rawReqHeader); reqPacket.append(rawRequest); - std::string resPacket; - Router(reqPacket, resPacket); + connector->Write(reqPacket); - pbRes.ParseFromString(resPacket); + const int headerSize = 8; + std::string rawResHeader; + connector->Read(rawResHeader, headerSize); + RPCHeader resHeader; + resHeader.Decode(rawResHeader); + std::string rawResponse; + connector->Read(rawResponse, resHeader.PacketSize()); + pbRes.ParseFromString(rawResponse); return {}; } diff --git a/rpcclient.hpp b/rpcclient.hpp index 8e21b71..0f88ce9 100644 --- a/rpcclient.hpp +++ b/rpcclient.hpp @@ -9,10 +9,15 @@ #include +#include + using pbMessage = google::protobuf::Message; using pbMessagePtr = std::unique_ptr; class RPCClient { +private: + NetClient* connector; public: - std::expected Transaction(const pbMessage& req, pbMessage& res); + RPCClient(NetClient& iconnector); + std::expected DoTransaction(const pbMessage& req, pbMessage& res); }; diff --git a/rpcclient_memtest.cpp b/rpcclient_memtest.cpp new file mode 100644 index 0000000..65709fa --- /dev/null +++ b/rpcclient_memtest.cpp @@ -0,0 +1,47 @@ + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +class TestHandler : public NetHandler { +public: + std::expected Handle(std::string& req, std::string& res) override; +}; + +std::expected TestHandler::Handle(std::string& rawReq, std::string& rawRes) { + control::HelloRequest pbReq; + pbReq.ParseFromString(rawReq); + std::cout << std::format("rpcName: {}\n", pbReq.meta().rpcname()); + std::cout << std::format("req message: {}\n", pbReq.message()); + + control::HelloResult pbRes; + pbRes.set_message("Johnny!"); + auto resMeta = pbRes.mutable_meta(); + resMeta->set_error(false); + pbRes.SerializeToString(&rawRes); + return {}; +} + +int main(int argc, char** argv) { + TestHandler handler; + TestConnector connector(handler); + RPCClient rpcCli(connector); + + control::HelloRequest pbReq; + auto reqMeta = pbReq.mutable_meta(); + reqMeta->set_rpcname("getHello"); + pbReq.set_message("What's your name?"); + + control::HelloResult pbRes; + auto trRes = rpcCli.DoTransaction(pbReq, pbRes); + + std::cout << std::format("res message: {}\n", pbRes.message()); +} diff --git a/rpcclient_test.cpp b/rpcclient_test.cpp index f17efee..265006f 100644 --- a/rpcclient_test.cpp +++ b/rpcclient_test.cpp @@ -6,18 +6,24 @@ #include #include + #include +#include +#include +#include int main(int argc, char** argv) { - RPCClient rpcCli; + TCPClient connector; + connector.Connect("127.0.0.1", 1025); + RPCClient rpcCli(connector); control::HelloRequest pbReq; - pbReq.set_id(10); - pbReq.set_name("barefoo"); + auto reqMeta = pbReq.mutable_meta(); + reqMeta->set_rpcname("getHello"); + pbReq.set_message("What's your name?"); control::HelloResult pbRes; - pbRes.Clear(); - auto trRes = rpcCli.Transaction(pbReq, pbRes); + auto trRes = rpcCli.DoTransaction(pbReq, pbRes); - std::cout << std::format("res name: {}\n", pbRes.name()); + std::cout << std::format("res message: {}\n", pbRes.message()); } diff --git a/service.cpp b/service.cpp index ea5c80b..5866cef 100644 --- a/service.cpp +++ b/service.cpp @@ -13,14 +13,71 @@ extern "C" { #include #include +#include +#include + +#include using namespace std::chrono_literals; -void Handler::Handle(int sock) { +void SocketHandler::Handle(int sock) { std::cout << std::format("Handler {} start", sock) << std::endl; - std::chrono::milliseconds timesleep(1s); - std::this_thread::sleep_for(timesleep); - std::cout << std::format("Handler {} done", sock) << std::endl; + + const int headerSize = 8; + std::string rawResHeader; + + char buffer[headerSize]; + memset(&buffer, 0, headerSize); + int rsize = 0; + + if ((rsize = read(sock, &buffer, headerSize)) < 0) { + logger.Log("Error read"); + close(sock); + return; + } + logger.Log(std::format("rpc rsize {}", rsize)); + + RPCHeader inRPCHeader; + std::string i(buffer, headerSize); + inRPCHeader.Decode(i); + int rcpPacketSize = inRPCHeader.PacketSize(); + logger.Log(std::format("rpc packet size {}", rcpPacketSize)); + + char buffer2[rcpPacketSize]; + + if ((rsize = read(sock, &buffer2, rcpPacketSize)) < 0) { + logger.Log("Error read"); + close(sock); + return; + } + logger.Log(std::format("rpc packet rsize {}", rsize)); + + std::string rawReq(buffer2, rcpPacketSize); + + control::HelloRequest pbReq; + pbReq.ParseFromString(rawReq); + logger.Log(std::format("rpcName: {}", pbReq.meta().rpcname())); + logger.Log(std::format("req message: {}\n", pbReq.message())); + + control::HelloResult pbRes; + pbRes.set_message("Johnny!"); + auto resMeta = pbRes.mutable_meta(); + resMeta->set_error(false); + std::string rawRes; + pbRes.SerializeToString(&rawRes); + + RPCHeader outRPCHeader(rawRes.size()); + auto rawPacket = outRPCHeader.Encode(); + rawPacket.append(rawRes); + + int wsize = 0; + if ((wsize = write(sock, rawPacket.data(), rawPacket.size())) < 0) { + logger.Log("Error write"); + close(sock); + return; + } + + logger.Log(std::format("Handler {} done", sock)); close(sock); } @@ -62,7 +119,7 @@ std::expected Service::Bind(void) { return {}; } -std::expected Service::Listen(Handler *handler) { +std::expected Service::Listen(SocketHandler *handler) { struct sockaddr_in address; int addrlen = sizeof(address); int newsock = 0; @@ -72,7 +129,7 @@ std::expected Service::Listen(Handler *handler) { std::string error = std::strerror(errnocopy); return std::unexpected("Accept error: " + error); } - std::jthread t(&Handler::Handle, handler, newsock); + std::jthread t(&SocketHandler::Handle, handler, newsock); t.detach(); } return {}; diff --git a/service.hpp b/service.hpp index 30ddf54..c0ab945 100644 --- a/service.hpp +++ b/service.hpp @@ -5,7 +5,7 @@ #include #include -class Handler { +class SocketHandler { public: void Handle(int sock); }; @@ -17,7 +17,7 @@ private: public: explicit Service(int port); std::expected Bind(void); - std::expected Listen(Handler *handler); + std::expected Listen(SocketHandler *handler); ~Service(); }; diff --git a/service_test.cpp b/service_test.cpp index cb1b1df..7e53a39 100644 --- a/service_test.cpp +++ b/service_test.cpp @@ -14,7 +14,7 @@ int main(int argc, char** argv) { std::cerr << bindres.error() << std::endl; return 1; } - Handler handler; + SocketHandler handler; auto listres = svc.Listen(&handler); if (!listres) { std::cerr << listres.error() << std::endl; diff --git a/tcpclient.hpp b/tcpclient.hpp index 84504bb..8b2db1d 100644 --- a/tcpclient.hpp +++ b/tcpclient.hpp @@ -5,16 +5,16 @@ #include #include -//#include +#include -class TCPClient { +class TCPClient : public NetClient { private: int sock; int family; public: TCPClient(void); std::expected Connect(std::string address, const int port); - std::expected Write(std::string payload); - std::expected Read(std::string& buffer, int size); + std::expected Write(std::string payload) override; + std::expected Read(std::string& buffer, int size) override; ~TCPClient(void); }; diff --git a/fakeconnect.cpp b/testconnect.cpp similarity index 84% rename from fakeconnect.cpp rename to testconnect.cpp index 6569242..edeab7c 100644 --- a/fakeconnect.cpp +++ b/testconnect.cpp @@ -8,16 +8,16 @@ #include #include -#include +#include #include #include -FakeConnector::FakeConnector(NetHandler& hand) { +TestConnector::TestConnector(NetHandler& hand) { handler = &hand; } -std::expected FakeConnector::Write(std::string reqNetPacket) { +std::expected TestConnector::Write(std::string reqNetPacket) { std::stringstream ss(reqNetPacket); // Read binary header std::string reqRawHeader; @@ -46,11 +46,11 @@ std::expected FakeConnector::Write(std::string reqNetPacket) { return reqNetPacket.size(); } -std::expected FakeConnector::Read(std::string& resData, int size) { +std::expected TestConnector::Read(std::string& resData, int size) { resData.resize(size); auto r = backss.readsome(resData.data(), size); return r; } -FakeConnector::~FakeConnector() {} +TestConnector::~TestConnector() {} diff --git a/fakeconnect.hpp b/testconnect.hpp similarity index 81% rename from fakeconnect.hpp rename to testconnect.hpp index c557899..c93405f 100644 --- a/fakeconnect.hpp +++ b/testconnect.hpp @@ -13,15 +13,15 @@ #include #include -class FakeConnector : public NetClient { +class TestConnector : public NetClient { private: NetHandler* handler; std::stringstream backss; public: - FakeConnector(NetHandler& hand); + TestConnector(NetHandler& hand); std::expected Write(std::string payload) override; std::expected Read(std::string& buffer, int size) override; - ~FakeConnector(void); + ~TestConnector(void); }; #endif diff --git a/fakeconnect_test.cpp b/testconnect_test.cpp similarity index 90% rename from fakeconnect_test.cpp rename to testconnect_test.cpp index aca9edb..88c8b75 100644 --- a/fakeconnect_test.cpp +++ b/testconnect_test.cpp @@ -8,18 +8,18 @@ #include #include -#include +#include #include #include #include -class FakeHandler : public NetHandler { +class TestHandler : public NetHandler { public: std::expected Handle(std::string& req, std::string& res) override; }; -std::expected FakeHandler::Handle(std::string& rawReq, std::string& rawRes) { +std::expected TestHandler::Handle(std::string& rawReq, std::string& rawRes) { control::HelloRequest pbReq; pbReq.ParseFromString(rawReq); std::cout << std::format("rpcName: {}\n", pbReq.meta().rpcname()); @@ -35,8 +35,8 @@ std::expected FakeHandler::Handle(std::string& rawReq, std:: int main(int argc, char** argv) { - FakeHandler handler; - FakeConnector conn(handler); + TestHandler handler; + TestConnector conn(handler); control::HelloRequest pbReq; auto reqMeta = pbReq.mutable_meta();