From e2c72e1cd277d16e079b09a97e540799a0b1b6d6 Mon Sep 17 00:00:00 2001 From: marcelb Date: Thu, 28 Sep 2023 22:40:49 +0200 Subject: [PATCH] Rewrite async with pool connection. Fix timeout bug in pull method and define exceptions --- .vscode/settings.json | 3 +- lib/tcp_socket.hpp | 33 ++++++++++++++++- src/tcp_socket.cpp | 84 ++++++++++++++++++++++++++++-------------- test/client.cpp | 59 ++++++++++++++++++++++------- test/client.o | Bin 78712 -> 78784 bytes test/server.cpp | 36 ++++++++++++++---- test/server.o | Bin 70856 -> 78952 bytes 7 files changed, 164 insertions(+), 51 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 11e5997..d2d6f45 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -45,6 +45,7 @@ "streambuf": "cpp", "cinttypes": "cpp", "typeinfo": "cpp", - "thread": "cpp" + "thread": "cpp", + "chrono": "cpp" } } \ No newline at end of file diff --git a/lib/tcp_socket.hpp b/lib/tcp_socket.hpp index d1819f5..1061253 100644 --- a/lib/tcp_socket.hpp +++ b/lib/tcp_socket.hpp @@ -7,9 +7,15 @@ #include #include #include +#include +#include +#include + #include #include +#define SOCKET_TIMEOUT 1000; // timeout u us + #if __linux__ #include #include @@ -25,6 +31,7 @@ #include "ip.hpp" using namespace std; +using namespace chrono; class client; // class secure; @@ -52,7 +59,7 @@ class server { ~server (); void sync(void (*handlecli)(client&), const uint timeout = 100); - void async(const uint limit, void (*handlecli)(client&, mutex&), const uint timeout = 100); + void async(const uint limit, void (*handlecli)(client&), const uint timeout = 100); }; @@ -87,6 +94,7 @@ class client { #endif struct sockaddr_in addr; SSL* ssl = NULL; + uint _timeout = 100; // timeout u ms // server s klijentima const server* srv; // klijent sa serverom @@ -102,4 +110,27 @@ class client { string pull (size_t byte_limit = 1024); }; + +class ConnectionException : public exception { +public: + ConnectionException(const string& message, const string& data, const bool& interrupted = false): message_(message), data_(data), interrupted_(interrupted) {} + + virtual const char* what() const noexcept { + return message_.c_str(); + } + + const string& getData() const { + return data_; + } + + const bool& isInterrupted() const { + return interrupted_; + } + +private: + string message_; + string data_; + bool interrupted_; +}; + #endif \ No newline at end of file diff --git a/src/tcp_socket.cpp b/src/tcp_socket.cpp index f1fe0c6..11eebc8 100644 --- a/src/tcp_socket.cpp +++ b/src/tcp_socket.cpp @@ -64,22 +64,26 @@ void server::sync(void (*handlecli)(client&), const uint timeout) { * Nije moguće proslijediti druge parametre; */ -void server::async(const uint limit, void (*handlecli)(client&, mutex&), const uint timeout) { - mutex io; - do { - for (uint i=0; i~client(); + cli = new client(this, timeout, securefds); + } + } + } + })); + } - } while (true); + for (uint i=0; isock, (struct sockaddr *)&(srv->addr), (socklen_t*)&len)) < 0) { throw string("[ERROR] Unable to accept client connection "); @@ -244,8 +250,8 @@ client::client(const server *_srv, const uint timeout, SSL_CTX* securefds) { #if __linux__ struct timeval tv; - tv.tv_sec = timeout/1000; - tv.tv_usec = (timeout%1000)*1000; + tv.tv_sec = 0; + tv.tv_usec = SOCKET_TIMEOUT; if (setsockopt(conn, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(struct timeval))) { throw string("[ERROR] Unable to set timeout "); @@ -258,9 +264,6 @@ client::client(const server *_srv, const uint timeout, SSL_CTX* securefds) { } #endif - - - if (securefds) { ssl = SSL_new(securefds); if (!ssl) { @@ -338,8 +341,7 @@ bool client::push(const string msg) { } if (sent == -1) { - // Greška pri slanju poruke - return false; + throw string("[ERRNO] (push) - Error code: " + to_string(errno) + " Detail: " + strerror(errno)); } total_sent += sent; @@ -352,11 +354,31 @@ bool client::push(const string msg) { * Metoda klase client za primanje poruke preko soketa * Prima dozvoljeni broj karaktera koji će primiti * Vraća string primljene poruke + * + * Funkcija baca izuzetke koji se moraju uhvatiti za pravilno rukovođenje vezom + * Potrebno je i baciti dalje taj izuzetak ukoliko se koriste server async metode + * PRILOG + * ---------------------------------------------------------------- + * try { + fromclient = cli.pull(); + } + catch(const ConnectionException except) { + if (except.isInterrupted()) { + throw except; + } + else { + cout << "[EXCEPT] " << except.what() << endl; + fromclient = except.getData(); + } + } + * ----------------------------------------------------------------- + * */ string client::pull(size_t byte_limit) { char res[byte_limit] = {0}; size_t total_received = 0; + auto start = high_resolution_clock::now(); while (total_received < byte_limit) { ssize_t received = 0; @@ -367,15 +389,21 @@ string client::pull(size_t byte_limit) { received = recv(conn, res + total_received, byte_limit - total_received, 0); } + cout << "Primljeno " << received << endl; + if (received == -1) { - // Greška pri primanju poruke - break; + throw ConnectionException(strerror(errno), string(res, total_received)); } else if (received == 0) { - // Veza je prekinuta - break; + throw ConnectionException("The socket is broken", string(res), true); } total_received += received; + + auto cycle = high_resolution_clock::now(); + if (duration_cast(cycle - start).count() > _timeout) { + cout << "TIMEOUT" << endl; + throw ConnectionException("Timeout", string(res)); + } } return string(res); diff --git a/test/client.cpp b/test/client.cpp index f4a51e3..99cfc0a 100644 --- a/test/client.cpp +++ b/test/client.cpp @@ -1,29 +1,31 @@ #include #include +#include #include "../lib/tcp_socket.hpp" using namespace std; +using namespace chrono; int main() { try { - uint n = 10000; + // uint n = 10000; - vector thr; - for (uint i=0; i thr; + // for (uint i=0; i(t2 - t1).count() << endl; + + + + while (true) { + + + + + auto t3 = high_resolution_clock::now(); + mycli.push("Helooo"); + auto t4 = high_resolution_clock::now(); + cout << "Send : " << duration_cast(t4 - t3).count() << endl; + auto t5 = high_resolution_clock::now(); + string msg; + try { + msg = mycli.pull(); + } catch (const ConnectionException err) { + cout << err.what() << endl; + msg = err.getData(); + } + cout << msg << endl; + auto t6 = high_resolution_clock::now(); + cout << "Recive : " << duration_cast(t6 - t5).count() << endl; + // break; + } + } + catch (const string err) { cout << err << endl; } diff --git a/test/client.o b/test/client.o index 8a01c9f3dd0e03b519a8b91cfa9ed38005251248..4789f27fda233f829a36e870f2f97e75e2ac2fe9 100755 GIT binary patch literal 78784 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 LOUkG-C70R%|3PC) literal 78712 zcmeHw3wTu3wg1TrBBF_2s8mtMH!8+VUL+_QgnK|NDO* zqhX!B*4k^Yz4qE`@4e2MIoG*LrzIyPr5OB4F)lEYa9uW0B8nMbcs60>r`RYojxdUi zlMIJ345(E66-!b-xII}C6ijD6YLM!U;g+p%Eb}R-S|>>L>^@DWNs59-rYuvvG`h@| zWh-1+Ch-dD^+bECxt;}1Jze4z)a#LL`ks>XzL(;9+`_sk&O}`c{v_t zvpp45_9PwYuaNC&h1PCc>(y~RE1W8uHx#5c=u`1osAeebm2thAHBychJ}m~xFcehn zU5t8cGFkBe|7J41oZGV-hjbRIpz^bG>-`H0^3JWVIj7#=*s}DTrG*9O6y#+!2eNX6 zWYWulKT>!4>?#Ap(nUBnqmkSu%Ss;6MlqfEKfL+v2}Q3j{_79k`)KBW-#_O+ez7s{QR}NnS1hXowQ=~ zog=3Jo$&KFV2@5f`FuoT{I6~Jdu;eWx8Z*VhC3=jyN}z*IR^72k)GGu@ZSdGB;vmb z#!Q62$41XZHu6t_{)y!HZ17GSeNMIM*ZNjfW+cr{ns{j`=gDV z8*T9WZT#d08#}MH;XlU4KI?4s-)4jV%Eqstj^V(c^^jl&zCm*8*KV@CmKu? z$BqZyVO0j@l{WIn+wivlpGf|H+sK(_!+)=hzx~q&-(zFvxoG!fv|;`9VgODu#u#lc zOUgKA7-8f8r$GM6*ez|JB^g~bfcU%t{-cbsM)6iz&SbpdDXE<0sqqDUi~P+YU$Ao4 zl=?uUuhP4)-e-6`iy8urp5~A@81i@|YeL4#(h5(rFWBk}dK!G8x8bi7U)q%!FU$qoL+SCSpvQ4F0S5q?5>I zTrfg*OQZj)7N4gn6fBut;ZZGvl2_xa^|sW9;C1!Bkgue|>2bNrrnR<`S{0!pcwvLT z5o%K3hGJp50{2kLlf>_N)n-FJ%-k9tjj^j zm2MG$U--NYC6%7aY>x}$T|U#kOBH#ZihNHc*#m9V)R(nVTeF1&O?8T~wy$if%@kR) zB9!NAtf^0=waZ@N0^y*8_fKaI4MLz1-EXN5mB1BUuGUIVMIk&eC%ZNfT;dJZcn|`D z-cSIO#k*)|!iBzlX7Yf4Y1%8@+n%H4ojhU=~7RVFW4Mt^wz_%J+0ZK0OnTW$<4y^76<%| zL-ibQg-gZ|>4NM?LkU;;B0vf~F#d&c#ta6%%RC6W9J_`%>kIsiSb;*W2G)28G1ZK3 zQUwaza!`g6gwu;?Ev63x2mN(6~~kL*L^5;^@t@qVp_Vepf(h~^~15mtcm z1{D~CSg^5jNS7S!s%Flyp{$2kG!T?|A>*zNRsqajEK2_7ra-fg-7Bv;&=R8V48aBR zn*CP`Ibt3nUh4C8(7NS9H$)0=y<9fQt>6Yl%KPgBi?DIfmg*q{_xL#LYT%W5(5mKm zCR0%J)cLU&gol+?!+UcPSA`*HE2Iabs>UUL*rwdq+|uAP{EZmK#!$d(UNxzDSjX#O zQ6uQ1cLmMHKPqZwmj zEJWi57WBG6b78oVUvD&FZx*UWZS>JkG3K)YS?_af~@d8ZDmU)QkFcR!)vAdUCSz%&XkkWlmN; zHvP%SnaaOZT&3Y}nE02jhvRw}Fe%8Dr;9T2rr~dx_!|Ze;yTP2A^3=wC{hy1I$ZD* zJ`I#%#z>S&9$g=Snk0#8B#X94)^OuU{3RI~s3D~#0VauhlAG|UsFehcB>Xr2aG3{o zpf_cwFGDHAn2LYtL-Zpxy5nrhJf$0@COzFap6RQ>@9nz-C$uAt%NTdnn~&n^2*c0i zWuknz(W=UVe}vJ_<+mTb5+~{5#;shwO3;THKj(7j%v*8dN;4kja!}AyjSVQ%hx$5^ zX~igy^81f4V6|?>J$B3O(El*wO)j?_>&Hny#dzPW4@)tP6v3;y(LCBDvrf0*&>E%-Ka7JPav_^w+de!B&4@co-~K4&XCt8%6V z-^KNno#KX2oFawKfN}1)eiAH@TcUje?wL!8Fa5ieKu(LA1EYX zmxiCO;d?avDH?vOhA-9d+ckW-hVRwzl^Q;x;V;whW7wY5uM!R4#&*CY759G>N##EX z?@>s=?AK%g=_t(2*r!m#BVd@HVhxX!p!soYc%)*?Pnm|Nw$*2@hNrgGXMu)SK18%S z4Ud3eewsA=2oq}2c#J$pfZT{6*_Q%+NT(lz`E3JI90;ZM}?V>J9p8s4GdPuB3`H2kR=K3l_|rr`@U z{OKCLSi_&8;oTa3oQ5yc@MmiHxf=c~4ZlFcpRM8RG(6>Y)u&0rpQDg~OEr9!hHumG z=W6&>8a`XYuh#HR4S%PG&(ZK}HGHmyU#H>oH2iuEPrEhs*`VPI6cVsY!%xugJsQ4H z!*A8_MH+s)hUX<*P0)NXm;ahk6?sRuY+DrEthI?gK zC^@>--M%ILd7)V}|64p7yEl5;KLIjMG>E^BD0_E)9F0a-i!vpW_U?SsEK>q$@6JtT znG#2PcmBpKQ^IKP&R>{iN)+wgd5c-5B;DSf*PCTJJnh|im06}l(cYb2vrGx1y*n>9 z%aj<}yK}Nxri9Smoldh%iJ-kZPcq9#i1JZp`AAVtGRqmF{MGlWzm(`f|IIQbc+h{d zOo<)z-z-x?2mLq8l*mE<%`zo$(0{W`iAeO{EK?!}{Wr^$z(N1bG9_-%f3r*p8}#2S zQ=$g_H_McuLI2G%C1&>SJjyInLT2yIB(qG3n7uo{`cC!VA<7?{WlG4P|7MvIG3dWp zK1Gy&W0ol)gZ`UkO2nZ5W|?*EK_0x<8PKJA%gy! zWlDsg|7MvIAn3nYro;#OZbUZz)$<%CjtGm!&+(QqH%O&#{zGvy_jwlt)|2M_9^fmhyME$B)x|oNpfpZY5CE7aEPNXaQYg zD|%S8H{--M;(MMU`2B)Ee<6W0zjufCxHtXfLieV=6nD~#?l->=je>wQ7LXq8trc-v z)u(vfHi_KRXgRye-9G7|+i>X)e-;|)?wIs73XvZo&PQsn`Fk;q+%9Q8>YD9S{hdo_ zXIO)+4%iX#1LSWtD?#PAMQMo(Uh+^l; z1%&N9;%Ak_`8v`6hK;7X^KnUVwN2gtA;wetu)W^63VTRm8Hv3HBnlQ3m;Zxgm~>bWJ6w?(_u10!87nryZabgEKQvtK@bj9anW(yJcnmKF17fC7gW>H$ zBCHr=5WNM%(Nu9xfBd)K0DoeC{3nFh8dAEy9FLcscph6gZhZt=k9Y>T=V7GSH>ZA_W z>hoN;1^*~nx+5RqkR|-r-BCqDGfGT}j1})d*v?n*4_mAxyiGO#GR}FsM#SMouWo~= z(r~Z4y)P+rI9q848AuKn%~yALGo*B}M=pYinRq^33JUq#>|3PLx0C;LjD8Y5<0_+s z&y$4i$hfaD0u_+D^E}KLb7Up)a3U7OTE85ZkpimSzNP8%$@AtvFCv2+u3~q1d5=5X z0~3e9j*<;5<*-k32%9h&Yh97NcV7eDZ*>` zL&#qrSxelVuI=uQmi5HGR)mpRD7$(#f(B6{ymU!h2p|6?c;aVG$hGSN?(4JEkh=q- zKZsc}h(5+_A%u9TAvp+@phnIm)!Mfd3p0?@LcKm{(KrA3m+Z;d z!V5>=8>V&%l_@~yTqGvYF>o}212#Yr6}uz%Vq}B~UUY{)iqL^?*9l5HmU+wH$xx#5 z6H+mUb$l$k%#WznlH*&;j%$t53#-vjDbBWMF=>w>zG}LEf@L74dw*#((Z|JGDJH9q zVs%*bdfgadEn$zFXlV&=7FLsC8FQINm|}?VNC?do;}LGz1GYV6#kr`p8g#Op7%#=s zIr=|V3E_QmC;+-6#rtfyF~UTD0#<_LKIuL{+=mf}MKDqzynKJSrLTSY{-l=ku3wH( z!7`kKiTUD9)T{2uYnWXqHg-}GQ#$PtL3j~M`b2^2j=VgO7VTZ>BnC^4LH&yB6Kko{ z$kJnkrP*ibBu@h9maUwC!aa{=v_nA5I?2K26|Ka1x@l`}b1~PCAhy3G=7N>uaWp|< zUjdXHG2Ljcu-iW@*eEavz3!y-o}xf^!U`JHJA)?V!1-l93hD0_L49cn&~j4 zmyJRQ7(g)P`nXG`36wiMOXK?-)*K`94U#GI&BaXjLk-)$+YuWKSD#ouR&<4qRNXxX zJIGx}sM0N833pVDg_pk{ZrR@L+D+{tXkh$ccTMYXy?>r-Pjfm7Sp0Ssi1I!zC+|8PWp|OQuT?Un>>3TkMl@r%ziH_U zyWVei?M~hGNUSGn25%3yY_o>_PS>Bw#JOaXclkrJJlzT-)soH}cpe*()=nzfq#I@o$r%~VIIE8oV*c~|t&Vvz}Z$Rf5qa(^i_HtA}1z|Jkb;jQlQtgWjs!8*huC&JMa ze-Vz1wm{u1wl5z=u7|&5JX;0ESriY!D0Vg90^M)zzlugvy7WdU7r&LJ7!z*U5w7a( zaP4T1V6(e#*OHDZQpMkO;>ukYyEjD~n<8mf_SA&8p4pRxIIDtu?=6<(^i|324f~SYm-kjLX~(~Z zwVsDIs4ax1K1dZJJIj)U%zRB|pSyGPX`(!ehC8w>^8bN7hi75dzdq+q9bu=hDs~n4)3|(YRS%NeoDLWC4lkfF#TWUQA{Q z6g3TWvYKxbBo-q{*wxgKd4R(t+X0`^CYfb58!0NwU55kLm=C6RnQ?^YTh2iAjxsVK zCT_YLqkm?PNF%TnfDm+a?q@#Ab+xMy!2#mqAGsd6HO5JKv6~E_c$_U1=L=X~fXL z=vDZe)g`3~y>tgi_T_tw&@rSKj0zv0wTB0~#ingde>t73b5qT~S}7o*Wjm$sw}XY7Mzdml zycQ^JHjqyhLSc+y3u0+ik3MfHJ0(JFcjOdQ!>W9gD4*x*2@My{0-qs+fRcg8HvA$Q z$nMCWBf_c386i_Ndx;3R2xDLb3tGF>7eBOvWNm${+rkp&;p&+99=XtyG$abV~!JlIy|A@*F*B9nKC*sF7 zuN61pGU6A~_1udXaN&9}KOk@H96jqlc>ux`bYoQIhiWfFQCD{OADCzQ@@>!gX#eOi zPK+emW*0@0FxEi|y@)T!m!7HY_NAbi=L8wOz%9;=`0AMeg;A!b7Tn=6JUnJy>-zQ^RI^_xe;ZFFm4qXkD#!cZ z9`d3LcSokXeKUsmXbfufE!{$i1USU}pq`2i1`QaF=^`M&72*s&*^3c!1zhK_($XJpb z#xmOBS|@id)IKiZs9`L&bPcx8B-?r%(eUSjbfMR=BD;++D5_L#VDxl}-VXG3x!_U` zwmb5enWow5?i~37#a6+RM2?Pj#9a9WF~u^1qWLE%!$^s2YPma7Me;kcVGU}c%N>4? zu<5c@1YlP$Mo%h!O?=JcL`_tt9Y9MD*L+>}4k%RWsKQ@)ru%Gc8#aBLA~p(Av#-T& zLa?A)nathm#ze;T26yKutxFUJpnF;7YFub>IW01L2Zdwnz9Aa}*YAYFvF;V54@9i% z#MV`f+>KJ{J!(t&Ih8H`anGl^f51H){hT$Xw2IMx{=`x#Q&rmaL-eJOY<-hxygPCy z!FE?48KBRNEJDi%tMv(^<`-961@-~Rw}Gs!-qyMPQ$bd9m%M!(G>eG1EVHQ?mhQ-G zJ)865bF{ySTrZAPB31MgoQNmjY<2~+0z+J}(bzrC)L=m30-F@a(aSpMJkn$u7v|`suoBTfX zM7eDybx&^CVompR`7mwE=#O@*5XFv}gvz?-B?|QBG!Tu7iXsU96Eia2sk31@3{T6} ze%8Y<3im=6vBCdlJNEc;V#k@)NAo>_Szr5z%okGG_th&C5^5e< zXW1&+dNAuf{kkTNz~nnXj9(#C0MSC^psYSV+heT~gLT*I`1WhRJ}PcOxZ z)gpH(_NO00>S}9zve@o(;?d;7-(Utz2j0_ahO*TBePW$?Kp(YIg(q9Rcmp;!^vMve z%WKrFsERU{Bg{ywQyi|uz7`{6S(s8jNa)F$-qa(rAq{UG8`hlif(U?nGVbWgc%lpY zxQsOvXpc2zoJiDG`c&gjVnZK>wyPY{bXT{Wxqxs)wNS|5B(ucNs24rxKG^imM1&84DZ0cQu7#V!=w7!S7_RA=y^P_{8+~$j(>8M z^vR{}@H0!{>iU%2?(F(KsvDD^rhnZXYls0;u#KnSrGJPiXGU)@NWE@ccRf1e-dRO{?8~+4P&sX zu%G28A3~FM6;R(x!Y{ zINcKR@FeDF`MWfxo1h~kQ4ak%GI8XekSJneACFsAb5P-Kk)4X%u?;*O z;OQtH1KxGru6t;VcI9=r?s4C#ol4fxZllBKD2&ty@pO-4J&*ivVXt=AJ$R5MVI2fi zJYCW0x|@cjm6YnNx*IvJ^=KIV5ECYsGD*zxH!^?Rx#zT4dX;(J5JMzJYZN3#{wnLN zvdnTUV0QP-Zw?4EMApDbLD$;%PRzaZq=E(xr9k~@f*5>Q8v3s*W#cYYWm7Hc` z@WXq;Ra+6rdTPV2e)lmcE_D}=Aw#2|+uiM54l<1k2XaxSlwG)N3|-fD7pEo*E>5;) zJc(PB-I3^9#9Ot!Hhj@Au^ACZJL#vVye(i3Q3k_E&z;z3F+3Id*hqv7sIdmT3)CEu1sCSMo=x?MZOoEJ@DWOq#7fO9f< z-`to1DD*;GH-S|xtgOvUQ=3mon|V?jT$47Z$Fw;{Y9pBbApAA0*wm&Vrp-Tvrm$zH zJ5~04qj(x8{5qun<;`exQ{+U<0dD;@vY@bq5d0xk?sReMy;)`-@1g{#AmGUb+4|-y zl`S^ZntaP4paWwr>=1qzP5vjiMUxpT_QMi#2rh|lc2Qij;aIaLYt4Ql1~hG^+3e(4 zv%?@j2FERG#C|92`cb3W(;?{Yj>iRpm#Gu!S)YzIR3Bz(gMUTe;)}>FMasNKWxJ8~7t>{}KvcBx? z@>SuM74ERu3xsF&TV}dlT`&qgdDp{mE5q#!dkLziALnE2SGhaqIs~NkNb~^-u1?vl zFcuQ=oFS#bs)&3iFD%os6_P~}mfoV|m!Nh>wtuKSJh>uxHy-DtMt7YoTPt&PxNhTH z@NZHznBWz3x!rXemZ{s$bFB!{{rFYNUyngF-Z=x_5_1bE(H*%8&9K=XM)jDd%KTB> z4ni)$aRImPb*fIeNAVEKGBUcjrV#hHvuH>}&+?FKQ%w8bz;#F3d=c1)uVSIeH%5#a z1$F4wfr2HZ_PrL@-eGa={VLYp7NqG^dn;snUy7JQ?S1Ms+grDlbcs#tsi#bH#`pkFG@AqCee{F3|)swsK9Q<2ri2 zvJH$ftVUmr>v$&VZ5sNmGtCaYLfI-FjSd=|j8Qr+^Tb$w z6v=~5yvMu?T>Z>ZLwxGEW}e=)y#Xb6=$vEOzG;@3j3zY8Qb!cKBOCVM{0r0I z%p1ZQuUOldwGgbkvSRoy#yfzI9h)f$FHipYd(Go6P~DNf7h_HBrfb=G-u3fd=J{?A z!2F+N1~$`0=^0Oo@c{mBqM|S#9S2y3+y%2OwTqENUpK%)(_ z?Iy)lkrdC3_3;7Z^h{cJ#0#6jhh7!|h*-NWGyAxb#I!#{-%&9#R!l-1!~jr<+K7;4 z<&e3<7ttnB%oaLq<50}zpVCjYi><0Xd5YQIVezWHC|XE6*HrDam}*}LwWSMWYHdqj z93S&HdHTn)K>qER^=e~PPkQ~rV)(oH!ortgm^U8-o^ksnBXuM^>u zOxc15#(5VsQHYUwrVpRDhB#^5ow=~E8Es96eNNc$qsSf54QHO6@539Ii}OS9AbjHq zQt3!!9$9#rHvzwMU91iiR-wknk|#;YyP9H+D^I$JS&n6vS^Zf~WR`D`YbFKG>d&%Y znDwK`HfGUuY$M%Y-K>8riam*=>Uz-Bcya9gIichUY%dy*yhh@$-$HR-ewTwZpi`HO z|Eq!Lb57j3%N_1q0B7zW_Qhy*Bl;*0CA3NqPlpkArvHcNGp+2a$zmhO=;E3j?P-VUXfKGIk7Qa2 zb7OA*MMN#)+i{7>_rK7(V`V)WN)*3btL4#CJp6iq;DsZN(ilBjoj7bQMsq4`@y6*4 zvqv4&qe3!crwiAl=?y2Enu?s6AaqB52WLi)#+p4kI@Y5=IqBoO5FDjAr ziK3#gFh?sM2NA7Uqcxj|nQSaH`Xvc8HNw|D)nxX{bdF#;Now>H5t>Nzwkng)CG0Op zlY*3LQURFG=0&`pymDHN%E<-X1X+A4S%px0Y0o=+Qc+w=sQstiGVHV)_E6 zpJAcbF};}SW=!HC;o0p(O4Mzl#MbWwLdo#cEc$NA|B&G8w@}oHk4BW>hJg6oJfEz^ zGKHtCD3gFg2W70gBWWZ_E9XBa%X;4PW1$TBtT=}6r7Gr*zy3ILkRPF}6f-rT%a}#) zUMdC%&hTov$#)C4DURW(=$>WPUKQWo4RP(A8f$No*4}qQ@3dO8y?L?rPEvhjdvAJL z_7T|&VeH?a-0wW_z7QCn;gNURdT;{mLi$FgYs4Kid>@+ni#u*Re@QMGdxokH`9#z3({?V4H+e^YPPyRi%R1)r)ER>O(Od==sh_8~0 z6O8+tZ`@aQWzrPA{&NEd1^V9pnS0$u+d@aT-dM9T2^`As>?LKo` z?0V%}q0G|+wjDPtlhDz0bRD1z0KF7XhraCYoDqEyHSwJWcjx5juEX)oCOl@CBs9i3 zX^+aq?W75X!d6lrmDj7mBg?N7gV)1@hk+DN8TYuw6LgYO9^h}?$RoCO*Ev)VBLRm~zG0VDX z_Aa8C(piN&-a;9Sleisp>Q+KamL23EVSIN*k05agP9f zkojfpIV`Iuh#St`ky<+W#Js zd`aA*ukl~1`(efsyoX*iDrNV@L+Bbe@ZxBhA#CaH)?g{D? zZqq+2h8u`SV9QuihJ@SQxqMeF4Be4G(X8uCyXImv9;WTeGrVGSq`3tSS@MCj800s8 z&HnOZ2l!bHwA(Gd>qjt`#?$(JR^f}5$B541ik06{j}viB1cgK%uZgq>ISr)5mA~6B zD^L7fj6fp!@`(vS>GwDaVu$+XZ2(>oySp3Le}2$KZcTWb4q4!k1rAx@kOdA|;E)9lS>TWb4q4!k1rAx@kOls)Sb*L`JJ83OGlAani+B0D zeRy%QV@V)bU*j+gynP<;bjHhy{f&zzPNes3CAEFI`f?Q z&I0EIXQ8twCp*WPlarI1lb4g9Q;;(ur!c1|H#^svo0FTHo0prPTaY^;w=lOTFFVhf zmy?&9mzS5HSCBU$uQ0DDKRe%GXUywf`zc9b3AiKa>kW-LbkXMjjP*5wS(;z!7NjH99J%lsV)}u^p1XKObIV?I?FuRk$Wkom%b)1ZAOY zPI;vx&}dffUyojzZIWaC3_1MG!YlCx^=3coLT!ZVd=7HUCB7QCZo@)f&=IJ0Eb;n7 zaBW9*z2DauYIfj7+WruiNM+S-C2Dg=Am3XL7q3|cKD^4CrisZH>%X9>IwpMzy{?`b ztf(k;U@qa6;32(!X~0_}^zj8l{#t)E=82=$4~wD=`Y3%AAKnDsN<3HkmNB2EL7=e_ zladCb*%xd@hhz0)T*5Z~1|MEB?=Z#3sTo+fn8Z-?CPSGoSQ`j7sGih$8*7^DyjS+q zGuDo`y4u%dnigFr-TWA0A@|_@Zs0g0geCZA(D7$>fwWn^w|QA(wQF(NwAS(h=_Ta| zQw=Q`IoDzYs8*MU<5SXcDd%lSGmIzD{?k8;Mt9@-)%&8+QNs*lH{f`J4@9HefPeSF zXmli!{gc*3qj`XP{x=%kcbH*({ZKUez~P3G`m1O(6%Wv^2D}qr5BLzU8297GKOBuV z;pzVy0Jj}&821BSGaB!M1-u6^3iveOC67d-?*m>9xF7I#z_C9tj9$QEz`p=40L=V# zG};E31GpBj39t+BCxDJ)khKOZ2K*GT4e%?X1CDqUUwuP=9Dp@|R{*X6`~q+b;QQ;* zf55K+M-DfP6MlpK16Bf-0$vMP5BLt?jeuVRJ`DH++{JknumEs3U=`pz*yn1%YXIpk z&pm+Yze7I(R{`z-3_S*W!G40 z*e9dW^8qgaoCjD2cn#n}z9fw zPXms9E*k9xya5oeqc@%ebO7!HtONWH+#kOYFbD8qz%syB0q+6a4frhJNZd>QH68-U z2K*MV4DbRxchCgb0=OFRVZil(&jM}*i~#NdEXR{8negvLfZ2e{0LuXH1iTIKdBDd2 zKL*?eXyEypeSoI}j>3GH1(*kT4PYhULx3T`UclP`Q}ImFV}R!a?gN|$I0`q1S^@I_ zZv(6Z{4HPza4eq6x(zT3@G-z?fZG6n1-K9JXgnb}22XQd09Xh(3ve!=2XHCia=<$Q z?*`le_%h&j!1n?B058TK?#}e}Ml2&I6>IXY)Qld&k0$KSqB6r+o^&01J0uegV$-9DV_q z|7X|-a4O&^JVWvr-~zx1U>o4r2;v-I8Q>Pc+W>a}ZU#&pi#P*#DxiBO<}qMBU=83Z zz!iYM1AG8*6W|uWPXTuT4*LT2aVO3Jcq-r&z^Q=q0c!xS1Y7~Q0&pAj`!(SCXct2v zK1o-X8%awula3oXJbg7DI3qm78kzS+qo)(c)Zy?_!@$$GMjrlpZi77#&y6E9ryV(F zM#kYw(%Xy+kDYi{?x`mOE9%b!Tz?nl5h3_Pazpsr0K7r<`9p2ph`(poMWYygd;$5$ z%pWIDIbzr>D1;)>AI9HfpkDxJ(pzHmSAl*DbdqDzliLLY)u&I=)n%okr^E05F4r)Q zQ~jlW(ccOG8;$M-Onn<#C>>nwDakux?c~8e5%9r`F`kQK^h(e_0ezfK_r&NS(7yn^ zK&Lmv=(mAxJQR(drPIAJ`eUGv0R2*(o;+JHP(QbUJ{fd}PQNr(e;?=d8Eo?)H?F%aTPy#7F&1S{sf27BKZu@F{yw zzcHmfHRb*!a8iFBfSj*juhVdC^303ry9M;GL2uCM$u)w3>hA!3s!e}MkFiW|!*%NA znjSRn!B{)v@wEFrkh2?nrXI+kB{%W3YdqJPh>Z0KNWF^=sCK4e@y_6xO>AwPW(mzYD?~BQQfa@o+AKC1E^luO9yJ#Fff|b;`W4ux( z&@7VillJ8^FkaZ^#Kuaq<4EjVzr_C7&d#)tr+qY*kysm*Qcu#O2J-vvrRTk&$90er z?+?Pm$lf8yc>;10#Wx4&4?|8D(^IEt{oxo$JR2b6Mex+&TJLZ2Wih+G51tX&wO0J>*@`ddK181zYc{ZOp_4$vDxFVpGC z(*=VAxKx~n?gjlR%pbk~DZh%%opIpF!bc-kk=o55$V@&>b&_4j(ZjaRm`aaO@d~yuVte=B^mM)*;54B$i z`X12zIz4%TssCKiC*sVG-9*fWr7``Mf_^UOcJ1E@`bnTCTC*GwxdHUYein^Zk$mMV zWaF8!Hr@x%e&~2M@hCsh_7nR-AC5Nc{ABD%!$=!|em>}_pr5YGms3K-m3g3#0R0S| zenm{bYd}8=bh~+f59kii?bgMoLC*r+Zj9dteJbdu=^fu7# zd~84HLC|q5j`_!&*!YaaqO%xupH5Gf8*c}2=Y#$z=!>f^IjDrh?uII?@TTSj6j*1E?CVKSQUJjf!J7 zS_PgvAp^q|lcDWR*Ma_H&`;LsTCC{-eboT;2t?Z(Ir`rkme8{<0A7efApmiEyrL#T21n+h2hlMFg%Jc-S-T2o3oQ*KOcPfIak`=z;%Hv#iv zK2=tH$?~v3_Ff8l$c9e)q4j9%H=t)xTR+m;!kDEvV(oN6&XbrMiG0@qIlZ8N3A$as zsI9T!`2;-0DQN3Ftu2{{$WCD&nF_vdkvIP->ZF!xe8_8v^AG5aPe!9(5PcHp%8x)# z{vhV-H-ax4dGhhpw=??7c^LHbkuN`y=*MYv>ibc$@6_Hl@Z}+IeiZS2gF}?`TE4(Wvtd!o^=aBcRJ zVu(z?h}_){$a?rC*n|4HS!y2r5%=Pk?T>&eVhc0_c~JeC4a!I&&lF`$4x`XC4OKcrEcdL;AhS^~GL8jj6WI?FM}~ z>f6Q0k+`q$ceHP}#*7F38>OF;ukB|`LH`zXyEUX9^nC-=zmetJ)qfcDuTbAk|5ri( z2z0wx7mX%mRHXe+l5uU?3rR*-64@EJyz;bXQjC_g2UCoPlG2_{HC|3i`!L1Wo0Rs; zRAW_g+Se(@Zb?N;Td~X~$fR-t9~}tu*bcq!drudr2wxCDG;W$#A@F$;Vuu zVthlF_od(;FfYg2i~&MhBhN(Vs?z46IZ-AY{T-PL{N-64NyY<7k}_&OU?2@YS#(EI z+8>jQcZ9lV_q3#A=T+nImz4J7&{yW)toLWR<@&lRa^V4dK!U-*Gz`xtQJ`C8b@TZ2XKQ^jBsuZRT%HN^46q`ta{CwUuM+B!t!crrC@%?RU@RJy)5rW@pR)`{5#yZKbfvyO-XxaxUnzg zWL$rkn)dhM#*fp=alLX_+M0CZkzwsgC`8g_edxj5US#qeITLr8V1JkS z4>ve2O}jtIxGrsTlJN|A%wYV*l~!u_;u{eSDxW$84_V-l1^)lAK(Ls=U7ziq1%*X_E+f?pF~ zRtsP9;S#UPM_S6qTgu}t<%wKIYD|8xkkALIBJo+;CZX74;Ii)}Sr%u1TsmaY5PKM0 zk70Y!{)|4@f{V}JzmEp!VttA%BkYP#gd4_5K$e+4LX}xR28PI8frhPZ+=r_fV_uW! zWTv*^eh7WAT^1iM(xWEgv*&mT6~2o*qV&#Y!G|%wYG339fKz<`jLQCD90UqqQWpJP z&4$AXN|aT<_i%YD3;YL{adi8?@`>=cScPZvco#D)W4M4}6T>!!s~N6kxSnAb!>tT^ z8SY_dIAzP33>^%!85T1vW4M4}6T>!!s~N6kxSnAb!>tT^8SY_d7Behk zxPW03!#0Mi8Lnlxo?#cmtqgk^?qO(%gB+f(Vd!9(&9InZ8N&q(n;5n+T+MJT!}Sci z7;a_Q%Ww}v@emJ8keMg#;9!`|u$W;P!vzeR7`8E7&2TNl^$fchZe`fZa1TQxpY6}k z!BArV{r{$Kl`^|5em{N6l!=aURSR1hLoE)cGb=AE`y6MBC_1mr$;ryjJCo4^>qPN3 z)%YrE<)S!|1PVRdK_7?s7ta#{CgP_!l8hgvX|t?PRFClMEqEGE!dus~65x}Nr6_w7 z7vfsNDsg>`8J8s%_abmXa@4x1@T&y>56n2P@c)C0MEd_$@Q*bvwzRtmc#=Pn*JXM( zh(7P)kMNZuF^cEd$dH5sOoXR=AmJ}77Hoz%3*)kZ@pX*vkYoer0Ksp?AA|OjuzEPy zAI35N6~L4HeJp1-94zo8XX+G*P~&(F<3o%;nfYI5e7Obh zz(P%OZfE=j%-_iPZH!m@k&TT13**`CjPDtL4tG@X=VJ9H`O_J%^sHmN+Fz>u5Iw6s z(7Y(O%nN1DyS-9zWl#LVlxSD&Tb2BG4(~D&5xW>) zYlHs{Gp?`JtLa(`93PulQrW&VnbWfRJ8^L{|`vF7)2t8Q(fj;??~6Iph17{{%@kl5xOHH15YT{$rM-_{$jo3ETNnmg5IL(>Ts>@P3xj zMicOf?9*<8-v&JCb9gkeS*?BSJi&;-)pKER8%q%nv2lO{A z`rl&1e?Ra?kw&X!yQ$pa-vCegEaiEm{P~|YavTUC#BW?81)Rik7Bl`bOTX@C{PtOr zk)Exk&j@so*ub z2t4W2$Nqe-L>s#Wo(mcnJ~pwQl{WZA0*`fVu@pl0km>WV4gY2v{7&FW&nqsK^?Cbc zlp_EV{`q+lul#T=@QLiXnfa~bxJ1QaHso)4yhcJ`A~_W{_$4;@Rlt*;jcn)hq`JnN zjK819tB&zUV}c}VHwSoid?G!IfhRpbm@7FUR($3=B>rBG^D6GGVf@i;g3VC-mY0D)3HzwF zmnD9j1jaA(Bwn4zF*C(yk0Y@@=VQW>K4W>_tz-VHfls9WPX#{HxR>XP+Rxn2a(-r+ z?=LX^a~_Z!mYQ;7QNp*&kHhn}I(G_8+rV@})~){K`f? z-MdnCnN@(6 zj`2~BCn_GUv60im{4a95;u&y=%sxGFyFUh=+WnmMSGv8-_;I{m6iKy=v@;}s9ousP z?CJ#$LwP{75pQJK}Tv znTgvi0AAR^GGCf)_&;a<`*~b4SpN9463d@ygI^CkwOi_z0#sb;W4zVRC&S?r*{xFG z`>$(v0Z;Nrumh^PZ!>-iwZw;>3J&p{169E($hMQQyBk8_BS;z)&Q?`kP_s-@7dsYv78>B?@G>zS==vP zzmz{$0-s3!VjKK*HuyCx-@3lMCipXrh6Pe@$^+8pXiV@#?Vf9cr}t+j;=dnwvgfrt zUI<6x^8(|o{&qw*$?1Py7z;ef`Ea_d-@tNQjJK{kb&NlwTrw)%9uV@mvId@Ee(Sz> zxHECTE(M4dnh-KZ(_%nFEtMTo#kyDkESbh`mB>yKY2jNJ3?jZi;kqD%WVDNJr zIU8*7uh`%}1D^IX)^pHTz>_|ov)^9M?T*it_$8L}&fSbZnddLUi1=&={%F3|K^FEc zH15`Y#U#d$;s8L;WYVWp;N`Xc?|roYf&Q6WB{rRjAKCDy=1ct_;tu(keG(GWdAX< zBr=0(Il!L;%c=X=s4hNNGJh72m$LcIjBl%ye6`H~IO8vyCJ|V+#OFoEujRO>)`i0n zph%w;GbP{i%zrWCH&2y_8yUZp@xNhz#`G7Tn}AokF-m}^Z1AZZ&mUSUxxeB{CBW19 z-Fp7LMBv97bKlgZtcyNlKCG2K9QZf z1s><$pk!3*;BJ;v&+WFc948KFiR8=xK9N4RGCp&z6rk$9&-jJx&kFy;^ApRj1D@nt z^I*$?$LXbCyb9aMd4%Q6c1eBqa=*G6Z_QUk72Yy0GAHr)vi{0XDuAarW{p=1ncuo! zUB&oDo-aROeO5F6YK|vrd^a-QIxh4DNU~4cG_;lM-B>eHtPc+!7+i7c~OjsIf2HO{;y z#HgNzV{Z6g4gn+sNO-{MK{U9vl8-#Jfa#o@|3} z1)lUtW4}`Sz1wa0KeEB6Al{Lj$JqaQdtuCA{LL1>GAgQrA!k;=@OZon{hp9_kpV<= zsHL_xtJqgV?S>>#aW{Nc;$@p#jaMDYfhzSYSWy`Y)?FI z&VhIHnR7pRUDt||{v?1GN{ngYdqHh5n z@{1q)Etx@1SK2@m!PSaLmV;jbuJJAP@DBjbZEmWhAJ&9k6`?$eaV7M-n>IfWJSTB1 zgajE1=TziV%U4{QcV`BuJdAV62z|tH4w0DvFD{ZugDwFiH zlbI-v4N_(7&mf&9id~c&jKI=`*>LtanSbwTw-My>~>|)jSO+uH~4mjwksTT zJO9eAanOwoc~?2;mj3+_sNc%??+82AT_~J*@H@~!8t1?})G2bm#yeEnPY$k$!S6S@ zMQy)1m=_;cd{w3Ov4zk$+_N#>l*sl(a zbbjieG1E?od2D{(kmfZn@iyTU66;cJ(3hYOML1$LwunfbS{%Ht!&QcZO+#Go(d{{Chcby?t(La%$roS5Xv9YcQV#F2zD{wnD1G&3>$;?= z=FY_cBGBNWw}dn|dt#N5AV%Z-GLBeR`<(~NV*OWL<^7OK zQ&_4vT}Z>p4HIQIZd6N zj8iGj0@HPr-QwKARoLLg6!l;2bCu8J!|_bh#|jrCM@{eFA#uJMZ^&!NQ)#~e9`qTv zK)%b#)qwHU9Uv>mDczXz5-pAXt2|Aipn9{D@_l8a1cpQ(T$ma-@Jq`Eg(WINMerWH zT?TWdRd0^l%JEzx-Zmw(muCOfj4)kRDS+88Y%JeF6K9Q}ubNxnIO8dqgBXaH@KE@w z;Rds*Yb`$NT!OK;>lf|Cb3MrZ({zU<@FBN=9BN<*G_R3iqF?{CU;^$&yk!SBKGcLL zDU0lv-l&COK&HfDmpmhf;~2boKug8wl+TF;o57|)AV+&Om>3FIR4I0+&rNvdhq^ao@}R-IN?hDCLF8- zcQd_hHovY29)XB6SabB>6bP#xOeDmfT{^rNB;1Ch#IrAM)``I%tV+_g^E`S$pb?ub?gmoZMZ$aIq}DhlE}fMWr#n?8?kX*J$6 zhPxViNN7eg{YSC?6zXrG1ZEV07S6~~oy)B@e@>?qaFM)M{dQ$t-l#i^GgJghvT#F!16&zMj%mTbu-8VDPaQ zO3kV0ALj=41ZR#9OSre%hpk2RmB?F)n^oliG7n0JF1+i{Q=7oSI9A5C*S7u^vsY~E zAZ{U>F;RIYLIZC-Xuv(R)Ws?fHuTd>i8rm-cJd0x`xfm+1$Ok<&>#2-iK&-n;mL_C z9N(5M_2BkcbAT4B&@xXepG^m=DDIHW5@wbY#MO{M>mh7T^2C-ufeGM)m{N4|#N#xr zPKw9X^Wz5Cm>PaTNK0=S?s{PxNW;or2pl98}}kr zU60q})R$qoX{K3%RRw!hG=&FU#BEA?bSQoWx8C{7@m+;gtQs{ed>8uJJi z49A!foQPcu&G=+HwQ?!6kiqKx3u!Ov4Pr&WeM@uQ%FUB~>VHCAJn-R@LO|>$ZZ6JM zB@NIXea@l(h1491(y^0?cx;MN8Pbm}o>xSj#*DWOnY5|ElC8Z3SOuh3ZCjLh_mE9G z#oenL(j+8@kzprM=rErtNZ`;1ktY&Q6VMDf&|*X3ATIACPA_CU>*T_g4T~b~V#Tr% z1DQB>R*T!k4EaQn1C0hgQSd8UO?RZEoN$A|4i7m8>FFvX9E&dTB5Duz1Jno1KlvO-z5hxdHjOT1aB^^u-y@!sGY@L? za^MndCMmyDsHg~?{zal4L2|kB@pkJLBvkmZk8)I~n0}C_Yc)ocp|P7Pv4oC_l?Zc7 z{h|J5KA^89Sa3xIM&6+wPb-kiC3<|pexp6XQ$7=hw;5jwnE4(NR}w68Xf6H;vxCi} ziQp}kj<~Z3($oD9BCsnzkw$wo88Rh;1~q;&>`_}ZP^{@Zv7^Tuep~ycM~CF#7^%r3 z^ws(CM62=wvVXrP_7a32JN+oN(@KZk>ZWB@?@))`p&j+r!%^mARw`$G;DmX<_0Kl{ zEq4P*BE*ixiQ~T-Q*F{{`K<=Ot6nTvtgO9%+B*Ef+z2r5!}N=Z6qKcp9mt{3V|7GS zsTg2paxU9?&qb^W2Ut#G8}xtCm9#@YKNyDyK@J)pAQBzIs}WG)F#QjGjZ5M-yR@#5|FmRV6#U)I{7?S8Y0#HkXynnaQ0fZ^2~8#>Rh zH#>9uP1AybhN%JCsSU*!#S$8*Z+4YUE3XJtc;X_^(AL-Z@PnvPR*h^?Zd}%c@@6W( z)nu_7dAQwjnm5od(SrdvJ$B>K;AV zM}b>k*<`zxW#yoQ0UrIb6I7^9CTru0D(y{DzW`buzJ>8VA=$@FJBFp;5c zeTC1}hIl|)M2F_OmQYP#Nuwo1)YG?8Vn;FB`yyvn7ibPGT-J!Mm6%P6U9qQf))aO3 zoGc8tHb*9~a53&(d9<6nNYSXI38k^ha2zd{Ps^ImE8}U91Y-ip33oCsk@y(I!_4K# zC9`)Q=tjo`@!UA&-st44?r_M;HXB9Tg&3Zv-8FJGBsdOGfS@$K+C-_14u=oh&8dBx z;$EY_xhc?$UA@(lR6a<4-C?l(!Q)RN+dGYw7m4E04wB(AhLXTL70ls4UTHgDhlFqn?mO&4A#FCy?En+!&!Bph0iAP83Ks4!K!dP%@!?(8ZeKL`xjNO{R!z$)YQv2vYnN%}BEUl>=5p&P7n;*nI7qu52 zy!#?QfMo>t_-4vAU5;uj*N%LbnQO<2S%Q=TlI)bsLM*|v1M!I;{Xv~-Uohma^;4G3 z_DP+=4uZFW6tzw=#AMzN=QXu7*A40Z9NjEH3PGOv@UTN8->Dz0hIFP%px*#XMiJ>O za_mUbi)mFrUms{K7{UTa&r8bMc|)v?YX8zXyZ^q+b~eT$KRsw5Zn%*DsI-tet!oc< z#oUsTi?+9bqz|h{v3rMA=C%+$d`k;tWs^F?1%k5j5blepQ$fNxtZlLQAvw=N+!+yRB5A%t zf1p{c40$D3C9JVP@~8nUf&(M@;%{7}zVLg%u9~J057(Gm7G9UlHMQ_xdU%esRJ$Uc z%?Z~gN-pPU$z>eZ%hayIR5bCJiNq6~itJK>w!1C0T$$c1A0jzGdzixm_=xRtEw__( zKAZ%w^od8+cteKeA;Dup32ypXCfGscFGM=Rd@N6xRNa@1Kjh{$FKevEIlr}>>C%xn zAC&JEABB9Q=+>F@mcwVXMOoxtQkyH z1Uy(jq1juFyMMS{Tiy_t6O^e6+Ozx%X;u2}49-+)!HJ!6V!P@CK2}(0o~`IMvdCzu z^?Yd0i}ibi9{X+cmm3Cr7y-v<{pT9~mED|n4ipcvi*>+5nNd7b9jMhFmqD6=IxcNOa#kWgq@5T)yxVV|$peS8M1B25`Qn?qDo1I}XRGZ3 zClR$kVY};<=RMD&27FCk-e4lDnTZ)3`UbOM9a3UON zyA3wvh&8y{+vKgr!#jx{x=Gw=?y;N(gKd*i;R%n9@w>`IS>%H;pZ-L#6HgS2r@QIY zMUQjE(m8Rz;-RLWHc`Q8WHm2q2zeI*hJq5-sVnh>N|TX=+vmP4e1|2gDHyh*D`n1nz6xhi8!ij<__ zSc_od)jy}8FdToXej(Ra(DJjQ=6m;)4EkL&y?!0nSMXHD$S~DXrk{7y>#O&7Dd@29 zTkF%$t9^}k_$mF@bNdPwa{XZp)$e~Qv0hvpjz3jD!u1t24wIauBiT;XSHE{hzYj-M z%=#lyz(>7bF+#$%kJbKHfky8rRQ1(+2^H+(x=Me=r{J}q(>o7US-tmA!EA1j^iRW| z(x1f|owy*Is`~0Zj0$G6JyiRuzUu!ST>l~#sNUh}z57j>wf7bfH0FG2t^3C6| zWyd4`)<4$qzXwFUzJu#2m`R=1KAC*2;Qyek*U#o3ZdA~r)ul^SPr>!T>GjLFzJkK& znhaG>!KbYC@jILJF@K+Wnk=h-RXtUH4i|d+OWPzx!6OtSL#zE>0G{fr@mKHvP_V{g zKL^WE;5A(6_0@ZR6nxrJ-`f74EcG3COUVlEK1Q`9q4FPv{R|g+`y+oRDGI7MruePx ze**&jCMvtR`To5=8W?;W;@{Xms(l4h&^Z0}uBxxz!#ZZ8tfTmp1XWfr1NBLNRp0Tl z4nl3565lglOuj-#|!7Fh( zv~*F_DC?3H3s08tL;(89RHeU)f3!R(-6f~|chx5nhNkOSsjH4T3WY@V_n#>>EK-Vc IB}>uxKf42RBme*a diff --git a/test/server.cpp b/test/server.cpp index edfe269..12944d4 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -1,8 +1,12 @@ #include +#include + #include "../lib/tcp_socket.hpp" using namespace std; +using namespace chrono; + int main() { try{ @@ -52,15 +56,31 @@ int main() { cout << "init server " << endl; server myserver(5000, 100); cout << "init client " << endl; - myserver.async(8, [](client &cli, mutex &io) { - cout << "Klijent " << cli.ipv4 << endl; - string fromclient = cli.pull(); - io.lock(); - cout << "S klijenta " << fromclient << endl; - io.unlock(); - // fromclient += teststr; + myserver.async(8, [](client &cli) { + auto t3 = high_resolution_clock::now(); + string fromclient; + try { + fromclient = cli.pull(); + } + catch(const ConnectionException except) { + if (except.isInterrupted()) { + throw except; + } + else { + cout << "[EXCEPT] " << except.what() << endl; + fromclient = except.getData(); + } + } + auto t4 = high_resolution_clock::now(); + cout << "Recive : " << duration_cast(t4 - t3).count() << endl; + + cout << "> " << fromclient << endl; + auto t5 = high_resolution_clock::now(); cli.push(fromclient); - }, 200); + auto t6 = high_resolution_clock::now(); + cout << "Response : " << duration_cast(t6 - t5).count() << endl; + + }); // string teststr = " Idemooo"; diff --git a/test/server.o b/test/server.o index 73fac41bb2cc94c8bc175116aa9f0a1145ea75ea..975d12e7728ac72311fba980fad4012fbf77c9f6 100755 GIT binary patch literal 78952 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 KqRy0@*8T_TIWaf@ literal 70856 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�oB(A$v?!wqI}U{;qjn%;C@2=Er@3~I5SyU zpSHQglO6QgudzQz=kPJ*mjTxDKRTwy9R%X{wH%sgP5r4|#MX!!)(-B>OP}MoB8a8i z`ha%1wXHsJz!jCkkLhT;3}-E)wc2BUtUaZ3WhgS^o`7gxO}^Zx6$Mo5KaM$&i8(n7 z%^LWWV4rCYTNm@&NaXx+;(VOik#g={ssT_0T>T`F`#D{?xG)#j5_R-LA9kmw^*nX^VmLvd zjL!Ioc32w2+|IEXf|9k+=sJTHLo0qr+myaLLT7E{Z(R3s*5*K08)CEz1{woFoOsA| z{2+6sxyCXSr_XpY?f&ggt@T5QUK~Oc2SRE3PNz_?sxb3G39IcnaTW z6yiB!s1S$B3maomoaBfv(@=|=!;zXX;TlHayyY1BC9`0!3pCXkg*D3>P=ti>n54i< zns6K|En$L&0VY5h_^vS$HwwjGSRrl;7e|q#8yw>^3h~GgNpa$!FczgnqEQ&C;~z8E z)j*m`p_m|!YluT&IA=I3l`)m}%>)_HZ;?*yDe@TD*sr(Z;zk+yuN!q2}yQ7eJ%|crKI?k`) zsfv+dt|Lvauh7d^??YG6K_392>hx1N!DM% z9?n2IlI>Lfp}41u-g7}&RDSh+3I)~oD2SIXr~T0izGtDJ`ksXr@)blO1|};D|S5cZ~bz%|Lq{^`8}LZ!Cps(0v4v=-H!YPc#jEP3VKA! z{zv6ga6L$R`9+*x!EO5}|3OE7_1-!Kr>Pg0unMYNrP1S#{OWy>3LdE#89LN4p62|j z{f!mO$Z$LN2gVv6b;IxlK&rpWuime%;4Vjjj->I1BY)3oDOkbyV3}6`D*sXGzu`tN zfBGGgqTtm^G0xyD|5M=U-Ak&P>U%X4e96vu_vA0+{GBQzLyseUJTg6YRf zu@pJ*D*q@4UWwD8qlzL&1()B-FQTFMK+!8}l>RFI9R{4zU1a2cHoquuuA8i5rLH<= V5E7a4&ptwGI7unWnH)*u{{e+Ju7v;q