From 16ed3619b385a8edf42df71b3f1eca07a453a2e7 Mon Sep 17 00:00:00 2001 From: xX-TheDoctor-Xx Date: Sun, 17 Jul 2016 02:46:42 +0100 Subject: [PATCH] Added Tests project, Callback functions are in progress, NetworkBuffer is done, Network Message is WIP but already has a lot of code, Serializer is done (subject to change), Utility classes are being made, and TcpClientWindows is WIP. Every single piece of code wrote today may or not change, but it will probably change because ill find a better way to do it xD --- .../Release/Tests.tlog/CL.command.1.tlog | 1 + .../Release/Tests.tlog/Tests.lastbuildstate | 2 + .../Release/Tests.tlog/link.command.1.tlog | Bin 0 -> 1296 bytes .../Tests/Release/Tests.tlog/link.read.1.tlog | Bin 0 -> 4138 bytes .../Release/Tests.tlog/link.write.1.tlog | Bin 0 -> 502 bytes .../Release/Tests.tlog/unsuccessfulbuild | 0 TestsVS/Tests/Tests.cpp | 12 ++ TestsVS/Tests/Tests.vcxproj | 156 ++++++++++++++++++ TestsVS/Tests/Tests.vcxproj.filters | 6 + VoidNetVS/Release/Tests.iobj | Bin 0 -> 31378 bytes VoidNetVS/Release/Tests.ipdb | Bin 0 -> 5152 bytes VoidNetVS/VoidNetVS.sln | 10 ++ .../Release/VoidNetVS.tlog/CL.command.1.tlog | Bin 0 -> 1734 bytes .../Release/VoidNetVS.tlog/CL.read.1.tlog | Bin 0 -> 234 bytes .../Release/VoidNetVS.tlog/CL.write.1.tlog | Bin 0 -> 2836 bytes .../VoidNetVS.tlog/Lib-link.write.1.tlog | Bin 0 -> 1066 bytes .../Release/VoidNetVS.tlog/Lib.read.1.tlog | Bin 0 -> 2606 bytes .../VoidNetVS.tlog/VoidNetVS.lastbuildstate | 2 + .../Release/VoidNetVS.tlog/lib.command.1.tlog | Bin 0 -> 1506 bytes .../Release/VoidNetVS.tlog/unsuccessfulbuild | 0 VoidNetVS/VoidNetVS/VoidNetVS.vcxproj | 9 +- VoidNetVS/VoidNetVS/VoidNetVS.vcxproj.filters | 27 ++- include/Callbacks.hpp | 17 ++ include/Defs.hpp | 15 +- include/NetworkBuffer.hpp | 19 +++ include/NetworkMessage.hpp | 30 +++- include/Serializer.hpp | 18 ++ include/TcpClient.hpp | 2 +- include/Utility.hpp | 14 ++ include/VoidNet.hpp | 11 -- include/VoidNetClient.hpp | 15 ++ include/VoidNetServer.hpp | 8 + src/NetworkBuffer.cpp | 11 ++ src/NetworkMessage.cpp | 53 ++++++ src/Serializer.cpp | 22 +++ src/TcpClientWindows.cpp | 38 +++-- src/Utility.cpp | 30 +++- 37 files changed, 483 insertions(+), 45 deletions(-) create mode 100644 TestsVS/Tests/Release/Tests.tlog/CL.command.1.tlog create mode 100644 TestsVS/Tests/Release/Tests.tlog/Tests.lastbuildstate create mode 100644 TestsVS/Tests/Release/Tests.tlog/link.command.1.tlog create mode 100644 TestsVS/Tests/Release/Tests.tlog/link.read.1.tlog create mode 100644 TestsVS/Tests/Release/Tests.tlog/link.write.1.tlog create mode 100644 TestsVS/Tests/Release/Tests.tlog/unsuccessfulbuild create mode 100644 TestsVS/Tests/Tests.cpp create mode 100644 TestsVS/Tests/Tests.vcxproj create mode 100644 TestsVS/Tests/Tests.vcxproj.filters create mode 100644 VoidNetVS/Release/Tests.iobj create mode 100644 VoidNetVS/Release/Tests.ipdb create mode 100644 VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.command.1.tlog create mode 100644 VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.read.1.tlog create mode 100644 VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.write.1.tlog create mode 100644 VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/Lib-link.write.1.tlog create mode 100644 VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/Lib.read.1.tlog create mode 100644 VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/VoidNetVS.lastbuildstate create mode 100644 VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/lib.command.1.tlog create mode 100644 VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/unsuccessfulbuild create mode 100644 include/Callbacks.hpp create mode 100644 include/NetworkBuffer.hpp create mode 100644 include/Serializer.hpp delete mode 100644 include/VoidNet.hpp create mode 100644 include/VoidNetClient.hpp create mode 100644 include/VoidNetServer.hpp create mode 100644 src/NetworkBuffer.cpp create mode 100644 src/NetworkMessage.cpp create mode 100644 src/Serializer.cpp diff --git a/TestsVS/Tests/Release/Tests.tlog/CL.command.1.tlog b/TestsVS/Tests/Release/Tests.tlog/CL.command.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/TestsVS/Tests/Release/Tests.tlog/CL.command.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/TestsVS/Tests/Release/Tests.tlog/Tests.lastbuildstate b/TestsVS/Tests/Release/Tests.tlog/Tests.lastbuildstate new file mode 100644 index 0000000..3d85588 --- /dev/null +++ b/TestsVS/Tests/Release/Tests.tlog/Tests.lastbuildstate @@ -0,0 +1,2 @@ +#TargetFrameworkVersion=v4.0:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1 +Release|Win32|F:\VoidNet\VoidNetVS\| diff --git a/TestsVS/Tests/Release/Tests.tlog/link.command.1.tlog b/TestsVS/Tests/Release/Tests.tlog/link.command.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..7d676d71d8ac78012840c4c50ceeba1333be7f3e GIT binary patch literal 1296 zcmb`HTTA0m6ouFGfd8TN#kUq`KqTNp5~CAM+t9RLK!kB74q~m~?aAM+etREFNu$0f zKj91V->YJ}%NA9yyiK1yQHB!z4-YD?aRF6RqiL7j?Rr-zJ zf?x9uQ_kMSVy|YCJq5E_SjIBqlu(%_Z-J&n(zNu6Jf<=^JqmMV)m_D=a8mE&Otl_a zGi_^Ke{{#2bC4Tdf!>03^q@=lfBDte@0@u7cgDVk(e(~pgUn%GIO`tuTGu+~|DW4; z*qx*G-%q9I^?kDx^g<*RRZN(J6PC@}fLN@jL(ZWeR+AC6vuU=kVAo?>AUW)S6fjbz zAR@0h`QLg@HT!$d-*hH)IPtDU+IY+K1Ya?JO(|h#Gilr*6Cb9l1f4jR!z>2>+}bz$b;N3S z6>qt3Z7376T8!QI_Rb=Q_MUMD+T89Px(yOqdEq1iVaj$LB_K80)FA_?VZrB|~!JJAJGoaHQ@eZ=Ujb zY9B2?v*YY+pHJx2h)VnFDpoQR4=Hn2v%;c|Qq2TW4Hk9v>CaXUid(w(JgRbwCgNoE z5&aK7Bwp}uyF<1!}CDWLb>kUbal z*d2NeF%*w#_^s~RXFcccXJUU>_Hz(J&k|pX=2V~fn%vMk#Fmv);+xaOsE=nJXjG|n zzYr4?1DxJJid8|bi^sfAy&!jQp2lLbLZiD^%Vyhu#-lnl zv)j`ytk--z56|G)>MMume|&Y@-!wyPZe5=^tzLF5`Wxx~X7zouu_n8?S;0 mhUE4G&+FHFt5`+Upo&cLXRME=yDQy}`?uQ49-p=M_5CkzV>cE6 literal 0 HcmV?d00001 diff --git a/TestsVS/Tests/Release/Tests.tlog/link.write.1.tlog b/TestsVS/Tests/Release/Tests.tlog/link.write.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..33fb381ec20d47821170c7d1b6896072e40eb958 GIT binary patch literal 502 zcmezWFOI>D!HOYa}Aq2<|0n))hG8iZmjKYs$2m;Fa0I?%b#uY_Q z4`_-LgBL>$4pUKWftZYL8m1aOplzN&b9ouKC@>e{BR!z2BY>EC=6Ny%0K<-&F7$+k KB=y{ga3KJ&a7x|) literal 0 HcmV?d00001 diff --git a/TestsVS/Tests/Release/Tests.tlog/unsuccessfulbuild b/TestsVS/Tests/Release/Tests.tlog/unsuccessfulbuild new file mode 100644 index 0000000..e69de29 diff --git a/TestsVS/Tests/Tests.cpp b/TestsVS/Tests/Tests.cpp new file mode 100644 index 0000000..bde0d81 --- /dev/null +++ b/TestsVS/Tests/Tests.cpp @@ -0,0 +1,12 @@ +#include "Utility.hpp" + +#include + +int main() +{ + byte *bytes = Utility::BitConverter::FromUint8(20); + std::cout << Utility::BitConverter::ToUint8(bytes, 0) << std::endl; + getchar(); + return 0; +} + diff --git a/TestsVS/Tests/Tests.vcxproj b/TestsVS/Tests/Tests.vcxproj new file mode 100644 index 0000000..d7e1ff8 --- /dev/null +++ b/TestsVS/Tests/Tests.vcxproj @@ -0,0 +1,156 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {41663B22-3949-4570-9AB5-309363EAD56F} + Win32Proj + Tests + 8.1 + + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + + + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + F:\VoidNet\include; + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + true + true + + + + + + + + {5172321e-ccb0-4a77-9f3d-faaf0084f434} + + + + + + \ No newline at end of file diff --git a/TestsVS/Tests/Tests.vcxproj.filters b/TestsVS/Tests/Tests.vcxproj.filters new file mode 100644 index 0000000..74f2955 --- /dev/null +++ b/TestsVS/Tests/Tests.vcxproj.filters @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/VoidNetVS/Release/Tests.iobj b/VoidNetVS/Release/Tests.iobj new file mode 100644 index 0000000000000000000000000000000000000000..839a832b182bc9d947d21f0b7477a6dd994ebd41 GIT binary patch literal 31378 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 ZsNl4wraiR0HB?Wsup}Fq=IyJx{$HQ5GnoJY literal 0 HcmV?d00001 diff --git a/VoidNetVS/Release/Tests.ipdb b/VoidNetVS/Release/Tests.ipdb new file mode 100644 index 0000000000000000000000000000000000000000..4edb2c467a6ee089fa190372119d6f7434a616fd GIT binary patch literal 5152 zcmd5;U2IfE6rQ##AS$j}5D;SvHIalgU9BYk#J#J_j|q}CrIe61>+S9>y|CSt-Mb|< zjot@Tf5FC-w6_|TY!kO-#!KUm`niD>qrMqda*Fvj5b-8<8rUKVIq7kjdE zXU=!d%$aZI%*<|WZhw7MNQgInINbGspk#WyO8bOGjR=W4aS&Jy%5jvXC})=lfuC3d zh4pCIx4)0N7Wx=!3@yG!-3Or64k{XkT3~L<7tr%|x7q0<*YydGpar_3NfCUT*!Z?F;+SU*Ed4EaF-H&rfwi zOs@=!JD}=)HJ4dU__(UfGHA+rt*tk=-LGqYdn+)mC1bC+Pl&Y`zxCdd--xskxf`YD z+;^|JM_P(4Ehm2dX7I-gK|T+`=Yr&;){%XKGF~SdG#)PO?s>##A1sOZ3u}+c6Y7+c zr#Mqz&Hx;SKj*E>Az&2Ze=Zkd9mY*9^C0h|^SO)2m3^l_dOOke)x@VCeE(+m{vaPN znc~BF1mkfC%3<*F8i6UJxkzZUFVEe7E#y;QhEJ2k7`G98?gXE!USjz( zsE7~FkCJNgiEHOV#oHk<#{Cj}a0R=M&4bULm#w|cPo6%f#$!GCaP|2xj)QX%l!Fo@ zpAIAjsJOfM$Vj=>{*>i&8}g0Q8`I8(n(rqPBcC1M1Jyl*q*GE6pWC!QQ(7LW`4%Nc zK9ud?GR{X|%1YGArm$Ppc*Eu^E;_K>R89sa5-P)|UgNW&QHW#UGR;39n(&Pq(Z*sk zyjqC&;5(uD@}8t`8;TO;i(~4Jz?V8p9h~W_-|56DgBZ788<+Tve0$*g>>Pccfp2(@ zz76m#^6`;!vpMil7@vbL-;W~VzoYpw|G94S5&ivOziPZ69Cr%5f>M+i*MsjzJNQhf zKM24o;-kGEj8`o_p)!2xH9mYlzQx}Bt|etfe6;(intWQdTxJ|fTw>fGz8}wl&zgVB zM|(dQqgwlu(#{3rP#lSo58say$hB?Sfmz7=Gpd~nj|@Iz5+k20_`km#`Ya$uNsR>OD>A4_txPw~9Hs13*j78I5?Kcv^IeL6H@QA}8@S+-`3(ku32)I{Q?eDcMN?bv48e$~pw3j+f~n+us_$Iw7;Hr<)A_ZO_~ z=71Fu(F1uikun|AFrMh_>WIa?W=uqr*@9!_ofPn$(WYKAZzmJkypyxc0VCcSZA$i= zxrCE5Z6|NUeMci=#1K1?w~~dN?F=Q7+3Y^s0@Rmw3VACHVr(Ξ6q9ZH)P&_+Mi;2kT20^8H2yvxz)z z>_Y!nu$Gnejx+oLJ7r~N2C%bO@f+-bzYx!FinCv0kL7TikP#)R_42j++vD3xzSp;q m$F<1!nUw!i+=E_kG>~ literal 0 HcmV?d00001 diff --git a/VoidNetVS/VoidNetVS.sln b/VoidNetVS/VoidNetVS.sln index d18a210..aabb269 100644 --- a/VoidNetVS/VoidNetVS.sln +++ b/VoidNetVS/VoidNetVS.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 14.0.25123.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VoidNetVS", "VoidNetVS\VoidNetVS.vcxproj", "{5172321E-CCB0-4A77-9F3D-FAAF0084F434}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tests", "..\TestsVS\Tests\Tests.vcxproj", "{41663B22-3949-4570-9AB5-309363EAD56F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -21,6 +23,14 @@ Global {5172321E-CCB0-4A77-9F3D-FAAF0084F434}.Release|x64.Build.0 = Release|x64 {5172321E-CCB0-4A77-9F3D-FAAF0084F434}.Release|x86.ActiveCfg = Release|Win32 {5172321E-CCB0-4A77-9F3D-FAAF0084F434}.Release|x86.Build.0 = Release|Win32 + {41663B22-3949-4570-9AB5-309363EAD56F}.Debug|x64.ActiveCfg = Debug|x64 + {41663B22-3949-4570-9AB5-309363EAD56F}.Debug|x64.Build.0 = Debug|x64 + {41663B22-3949-4570-9AB5-309363EAD56F}.Debug|x86.ActiveCfg = Debug|Win32 + {41663B22-3949-4570-9AB5-309363EAD56F}.Debug|x86.Build.0 = Debug|Win32 + {41663B22-3949-4570-9AB5-309363EAD56F}.Release|x64.ActiveCfg = Release|x64 + {41663B22-3949-4570-9AB5-309363EAD56F}.Release|x64.Build.0 = Release|x64 + {41663B22-3949-4570-9AB5-309363EAD56F}.Release|x86.ActiveCfg = Release|Win32 + {41663B22-3949-4570-9AB5-309363EAD56F}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.command.1.tlog b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/CL.command.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..cf2b1b35e436e6458604c95a28a5f58c59bd7fec GIT binary patch literal 1734 zcmeH{T}#6-7=_QZ;C~SBouGHS(|#Fnt++bJ7>+tOE$A$pAoa(qPtq_L>IU9!l;%y| zob!GphkSkBDOOuU^_0mdRH{fh>#nX9U<3Rq7^6fjR#$xc+S9SdI$$(^@C~d$m%1Tl zv=-T9vatp#9df2uJ@Y^ETmP+2z3uDB%@%q9VfQkfczeH`HBmCX`JLLc66&#>ka47r z&Z)5LJc(XBCeno#zPAo1Ve!clRlD_66=zmyt_jEz{KWYOtlD~Kd{V*g$XC$#r*tzX z(imH4$`0$Q!ZoPQZNHFlzI2sWxR~*?Zvm9E0C62dn}=R+{tM7u!@#`{EqB zmRdo+`TWI9?%ksuE{RqXQNv%kCxoA(t zBb1;mdUdE(p=FqexQEqn3=^~2n8_UhJq>PgI%Vyz#f1kVkt`F;=aeyN8qaj}YxcvYeQxgiA0TafF%U|nx(`5GqKNO3!0?%6A_PZ%K<5jJDuWW;ou>W1}5&-&;Y!-3#9rSJGl zP%=2lwd8ib&{m8uK`AtYuNt;uxGc_un1WUE3&~jI4b!TlfX|R>aeDK5zltiHGYlyr zgZ?U|i*%lvskxJD?^o&dCuf(s;MUg7yQgT#Y|{4Pn*Ff#w@z)yyj7mX%dp!#Pv9;l zUp2nQV8&c(KSs$(N-QI#8tRTn#{2}Y1n<>+jQ6aq5$leGu2|{IDRE-_D~2P=DgIN= z?%Erj;$6duRlYH@?eAZ8kKwwaBTdOo_l&<)+s@|)VYm9%y4^qCVdeIX`L}lW zkNTf__m9?9Rew3`Vx6mc4r%zDj?7Wy0_{r`&?~0+)}w*0^rA;S=o*zx*&nyIrsOeN y7w|Rbu&dj*ZNRExZ7P=Y->vTH@&TR;{2ElzIxl{al8`$X|R%~Ok25_XXB*dJs>jcILtAHMN-v=(n lo#&?g_u9JX?s;lI@qQlMGi`o$v2~X`?vifgXEitb;RfEa;d=l8 literal 0 HcmV?d00001 diff --git a/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/unsuccessfulbuild b/VoidNetVS/VoidNetVS/Release/VoidNetVS.tlog/unsuccessfulbuild new file mode 100644 index 0000000..e69de29 diff --git a/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj b/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj index ba417c9..75b4aaf 100644 --- a/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj +++ b/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj @@ -19,18 +19,25 @@ + + + - + + + + + diff --git a/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj.filters b/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj.filters index 13b2038..9c8cac6 100644 --- a/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj.filters +++ b/VoidNetVS/VoidNetVS/VoidNetVS.vcxproj.filters @@ -15,9 +15,6 @@ include - - include - include @@ -30,6 +27,21 @@ include + + include + + + include + + + include + + + include + + + include + @@ -50,6 +62,15 @@ src + + src + + + src + + + src + diff --git a/include/Callbacks.hpp b/include/Callbacks.hpp new file mode 100644 index 0000000..9a355de --- /dev/null +++ b/include/Callbacks.hpp @@ -0,0 +1,17 @@ +#ifndef CALLBACKS_HPP +#define CALLBACKS_HPP + +#ifdef _MSC_VER +#pragma once +#endif + +#include "Defs.hpp" +#include "Serializer.hpp" + +void OnMessage(byte sender, byte tag, uint16 subject, byte *data); + +void OnDisconnect(byte id); + +void OnConnect(byte id); + +#endif \ No newline at end of file diff --git a/include/Defs.hpp b/include/Defs.hpp index ac3de2d..1822fd7 100644 --- a/include/Defs.hpp +++ b/include/Defs.hpp @@ -2,10 +2,7 @@ #define DEFS_HPP #ifdef _MSC_VER - #pragma once -#endif - -#ifdef _MSC_VER +#pragma once #define WIN32_LEAN_AND_MEAN #define _WINSOCKAPI_ #include @@ -185,4 +182,14 @@ enum VoidCode VOID_COULDNT_CONNECT, }; +enum DistributionType +{ + All, + Server, + Others, + ID, + Reply, + Custom, +} + #endif // DEFS_HPP \ No newline at end of file diff --git a/include/NetworkBuffer.hpp b/include/NetworkBuffer.hpp new file mode 100644 index 0000000..fb3a850 --- /dev/null +++ b/include/NetworkBuffer.hpp @@ -0,0 +1,19 @@ +#ifndef NETWORK_BUFFER_HPP +#define NETWORK_BUFFER_HPP + +#ifdef _MSC_VER +#pragma once +#endif + +#include "Defs.hpp" + +struct NetworkBuffer +{ + NetworkBuffer(); + ~NetworkBuffer(); + + int body_size; + byte *body = nullptr; +}; + +#endif \ No newline at end of file diff --git a/include/NetworkMessage.hpp b/include/NetworkMessage.hpp index 57ebba5..47c9727 100644 --- a/include/NetworkMessage.hpp +++ b/include/NetworkMessage.hpp @@ -5,12 +5,30 @@ #pragma once #endif -class NetworkMessage -{ -public: - NetworkMessage(); +#include "Defs.hpp" +#include "NetworkBuffer.hpp" -private: +struct NetworkMessage +{ + NetworkMessage(); + NetworkMessage(uint16 sender, byte distribution_mode, uint16 destination_id, byte tag, uint16 subject, NetworkBuffer buffer); + ~NetworkMessage(); + + const NetworkMessage &EncodeMessage(); + + const NetworkMessage &NetworkMessage::DecodeMessage(const NetworkBuffer &buffer); + const NetworkMessage &NetworkMessage::DecodeMessageHeader(const NetworkBuffer &buffer); + void *DecodeMessageData(const NetworkBuffer &buffer); + + uint16 sender; + uint16 destination_id; + byte distribution_mode; + uint16 tag; + uint16 subject; + + void *data; + + NetworkBuffer buffer; }; -#endif \ No newline at end of file +#endif diff --git a/include/Serializer.hpp b/include/Serializer.hpp new file mode 100644 index 0000000..f5cdf85 --- /dev/null +++ b/include/Serializer.hpp @@ -0,0 +1,18 @@ +#ifndef SERIALIZER_HPP +#define SERIALIZER_HPP + +#ifdef _MSC_VER +#pragma once +#endif + +#include "Defs.hpp" + +#include + +class Serializer +{ + template std::array to_bytes(const T& object); + template T& from_bytes(const std::array &bytes, T& object); +}; + +#endif \ No newline at end of file diff --git a/include/TcpClient.hpp b/include/TcpClient.hpp index 4a9ed6f..d8a07a0 100644 --- a/include/TcpClient.hpp +++ b/include/TcpClient.hpp @@ -23,7 +23,7 @@ public: uint16 GetPort(); void SetPort(uint16 port); - VoidCode Connect(); // this function is used if Initialize was not called + VoidCode Connect(); char *ReceiveDataArray(); const NetworkMessage &ReceiveData(); diff --git a/include/Utility.hpp b/include/Utility.hpp index ac55726..4ead391 100644 --- a/include/Utility.hpp +++ b/include/Utility.hpp @@ -5,10 +5,24 @@ #pragma once #endif +#include "Defs.hpp" + +#include +#include + struct Utility { static void Delete(void *pointer); static void DeleteArray(void *pointer); + + struct BitConverter + { + static byte *FromUint8(uint8 number); + static uint8 ToUint8(byte *bytes, uint16 start_index); + + static byte *FromUint16(uint16 number); + static uint16 ToUint16(byte *bytes, uint16 start_index); + }; }; #endif \ No newline at end of file diff --git a/include/VoidNet.hpp b/include/VoidNet.hpp deleted file mode 100644 index ced8662..0000000 --- a/include/VoidNet.hpp +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef VOID_NET_HPP -#define VOID_NET_HPP - -#ifdef _MSC_VER -#pragma once -#endif - -#include -#include - -#endif diff --git a/include/VoidNetClient.hpp b/include/VoidNetClient.hpp new file mode 100644 index 0000000..7a74481 --- /dev/null +++ b/include/VoidNetClient.hpp @@ -0,0 +1,15 @@ +#ifndef VOID_NET_HPP +#define VOID_NET_HPP + +#ifdef _MSC_VER +#pragma once +#endif + +#include "Defs.hpp" +#include "Init.hpp" +#include "TcpClient.hpp" +#include "Callbacks.hpp" +#include "NetworkBuffer.hpp" +#include "NetworkMessage.hpp" + +#endif diff --git a/include/VoidNetServer.hpp b/include/VoidNetServer.hpp new file mode 100644 index 0000000..870304b --- /dev/null +++ b/include/VoidNetServer.hpp @@ -0,0 +1,8 @@ +#ifndef VOID_NET_SERVER_HPP +#define VOID_NET_SERVER_HPP + +#ifdef _MSC_VER +#pragma once +#endif + +#endif \ No newline at end of file diff --git a/src/NetworkBuffer.cpp b/src/NetworkBuffer.cpp new file mode 100644 index 0000000..a328b30 --- /dev/null +++ b/src/NetworkBuffer.cpp @@ -0,0 +1,11 @@ +#include "NetworkBuffer.hpp" +#include "Utility.hpp" + +NetworkBuffer::NetworkBuffer() +{ +} + +NetworkBuffer::~NetworkBuffer() +{ + Utility::DeleteArray(body); +} \ No newline at end of file diff --git a/src/NetworkMessage.cpp b/src/NetworkMessage.cpp new file mode 100644 index 0000000..1d283b9 --- /dev/null +++ b/src/NetworkMessage.cpp @@ -0,0 +1,53 @@ +#include "NetworkMessage.hpp" +#include "Utility.hpp" +#include "Serializer.hpp" + +NetworkMessage::NetworkMessage() +{ +} + +NetworkMessage::NetworkMessage(uint16 sender, byte distribution_mode, uint16 destination_id, byte tag, uint16 subject, NetworkBuffer buffer) : + sender(sender), distribution_mode(distribution_mode), destination_id(destination_id), tag(tag), subject(subject), buffer(buffer) +{ +} + +NetworkMessage::~NetworkMessage() +{ +} + +const NetworkMessage &NetworkMessage::EncodeMessage() +{ + return NetworkMessage(); +} + +const NetworkMessage & NetworkMessage::DecodeMessage(const NetworkBuffer &buffer) +{ + NetworkMessage message = DecodeMessageHeader(buffer); + message.data = DecodeMessageData(buffer); + return message; +} + +void *NetworkMessage::DecodeMessageData(const NetworkBuffer &buffer) +{ + if (buffer.body_size < 9) + return nullptr; + byte version = buffer.body[0]; + switch (version) + { + case 0: + { + break; + } + default: + { + //version nor supported + return nullptr;// WORKING HERE!!!!!!!!!!! + } + } +} + +const NetworkMessage &NetworkMessage::DecodeMessageHeader(const NetworkBuffer &buffer) +{ + return NetworkMessage(Utility::BitConverter::ToUint16(buffer.body, 1), buffer.body[3], Utility::BitConverter::ToUint16(buffer.body, 4), + buffer.body[6], Utility::BitConverter::ToUint16(buffer.body, 7), buffer); +} diff --git a/src/Serializer.cpp b/src/Serializer.cpp new file mode 100644 index 0000000..9bb9951 --- /dev/null +++ b/src/Serializer.cpp @@ -0,0 +1,22 @@ +#include "Serializer.hpp" + +template std::array Serializer::to_bytes(const T& object) +{ + std::array bytes; + + const byte *begin = reinterpret_cast(std::addressof(object)); + const byte *end = begin + sizeof(T); + std::copy(begin, end, std::begin(bytes)); + + return bytes; +} + +template T& Serializer::from_bytes(const std::array &bytes, T& object) +{ + static_assert(std::is_trivially_copyable::value, "not a TriviallyCopyable type"); + + byte *begin_object = reinterpret_cast(std::addressof(object)); + std::copy(std::begin(bytes), std::end(bytes), begin_object); + + return object; +} \ No newline at end of file diff --git a/src/TcpClientWindows.cpp b/src/TcpClientWindows.cpp index 7e9fc65..c3d2101 100644 --- a/src/TcpClientWindows.cpp +++ b/src/TcpClientWindows.cpp @@ -1,6 +1,7 @@ #include "TcpClient.hpp" #include "Utility.hpp" #include "Config.hpp" +#include "NetworkBuffer.hpp" #include @@ -57,21 +58,21 @@ TcpClient::~TcpClient() Utility::Delete(ptr); } -const std::string & TcpClient::GetIP() +const std::string &TcpClient::GetIP() { return ip; } -void TcpClient::SetIP(const std::string & ip) -{ - this->ip = ip; -} - uint16 TcpClient::GetPort() { return port; } +void TcpClient::SetIP(const std::string & ip) +{ + this->ip = ip; +} + void TcpClient::SetPort(uint16 port) { this->port = port; @@ -96,19 +97,20 @@ VoidCode TcpClient::Connect() char *TcpClient::ReceiveDataArray() { - char *header = new char[4](); - - int remote_buffer_size; - do - { - remote_buffer_size = recv(socket, header, 4, 0); + NetworkBuffer buffer; - if (WSAGetLastError() != 0) - { - // there was a problem receiving - } - } - while (remote_buffer_size > 0); + if (recv(socket, reinterpret_cast(buffer.body_size), 4, 0) != 4 || WSAGetLastError() != 0) + { + // there was a problem receiving the body size of the message + return nullptr; + } + + buffer.body = new byte[buffer.body_size](); + if (recv(socket, reinterpret_cast(buffer.body), buffer.body_size, 0) != buffer.body_size || WSAGetLastError() != 0) + { + //there was a problem receiving the body of the message + return nullptr; + } } const NetworkMessage &TcpClient::ReceiveData() diff --git a/src/Utility.cpp b/src/Utility.cpp index dd56227..2ebb0b3 100644 --- a/src/Utility.cpp +++ b/src/Utility.cpp @@ -14,4 +14,32 @@ void Utility::DeleteArray(void *pointer) return; delete[] pointer; pointer = nullptr; -} \ No newline at end of file +} + +byte *Utility::BitConverter::FromUint8(uint8 number) +{ + if (number == 0) + return nullptr; + return reinterpret_cast(number); +} + +uint8 Utility::BitConverter::ToUint8(byte *bytes, uint16 start_index) +{ + if (bytes == nullptr) + return 0; + return reinterpret_cast(&bytes[start_index]); +} + +byte *Utility::BitConverter::FromUint16(uint16 number) +{ + if (number == 0) + return nullptr; + return reinterpret_cast(number); +} + +uint16 Utility::BitConverter::ToUint16(byte *bytes, uint16 start_index) +{ + if (bytes == nullptr) + return 0; + return reinterpret_cast(&bytes[start_index]); +}