[38;2;229;229;229m#[39m[38;2;229;229;229mpragma once[39m

[38;2;0;255;0m/*[39m

[38;2;0;255;0mABSTRACT DEVICE COMPONENTS LIBRARY[39m

[38;2;0;255;0m*/[39m

[38;2;229;229;229m#[39m[38;2;229;229;229minclude[39m[38;2;221;221;221m [39m[38;2;0;255;0m<filesystem>[39m
[38;2;229;229;229m#[39m[38;2;229;229;229minclude[39m[38;2;221;221;221m [39m[38;2;0;255;0m<functional>[39m
[38;2;229;229;229m#[39m[38;2;229;229;229minclude[39m[38;2;221;221;221m [39m[38;2;0;255;0m<list>[39m
[38;2;229;229;229m#[39m[38;2;229;229;229minclude[39m[38;2;221;221;221m [39m[38;2;0;255;0m<set>[39m
[38;2;229;229;229m#[39m[38;2;229;229;229minclude[39m[38;2;221;221;221m [39m[38;2;0;255;0m<unordered_map>[39m

[38;2;229;229;229m#[39m[38;2;229;229;229mif __has_include(<unistd.h>)  [39m[38;2;0;255;0m// POSIX[39m
[38;2;229;229;229m#[39m[38;2;229;229;229mdefine FORK_EXISTS 1[39m
[38;2;229;229;229m#[39m[38;2;229;229;229minclude[39m[38;2;221;221;221m [39m[38;2;0;255;0m<sys/stat.h>[39m
[38;2;229;229;229m#[39m[38;2;229;229;229minclude[39m[38;2;221;221;221m [39m[38;2;0;255;0m<unistd.h>[39m
[38;2;229;229;229m#[39m[38;2;229;229;229minclude[39m[38;2;221;221;221m [39m[38;2;0;255;0m<cerrno>[39m
[38;2;229;229;229m#[39m[38;2;229;229;229mendif[39m


[38;2;229;229;229m#[39m[38;2;229;229;229minclude[39m[38;2;221;221;221m [39m[38;2;0;255;0m"../common/adc_utils.h"[39m
[38;2;229;229;229m#[39m[38;2;229;229;229minclude[39m[38;2;221;221;221m [39m[38;2;0;255;0m"adc_net_concepts.h"[39m


[38;2;221;221;221mnamespace[39m[38;2;221;221;221m [39m[38;2;221;221;221madc[39m
[38;2;221;221;221m{[39m


[38;2;0;255;0m/*  SOME USEFULL PRIVITIVES  */[39m


[38;2;0;255;0m// A generic implementation of POSIX OS daemon[39m
[38;2;221;221;221mclass[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcPosixGenericDaemon[39m
[38;2;221;221;221m{[39m
[38;2;221;221;221mpublic[39m[38;2;221;221;221m:[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mvirtual[39m[38;2;221;221;221m [39m[38;2;221;221;221m~[39m[38;2;221;221;221mAdcPosixGenericDaemon[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;255;0;0mdefault[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m    [39m[38;2;0;255;0m// run server as daemon (still only on POSIX OSes)[39m
[38;2;221;221;221m    [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;255;255;0mdaemonize[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mdaemonizePrepare[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;0;255;0m// reference implementation of forking for POSIX OSes[39m
[38;2;229;229;229m#[39m[38;2;229;229;229mifdef FORK_EXISTS[39m
[38;2;221;221;221m        [39m[38;2;0;255;0m// get TEMP directory in OS[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mauto[39m[38;2;221;221;221m [39m[38;2;221;221;221mtmp_path[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mfilesystem[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mtemp_directory_path[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mtmp_path[39m[38;2;221;221;221m.[39m[38;2;221;221;221mempty[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221mtmp_path[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mfilesystem[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mcurrent_path[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m.[39m[38;2;221;221;221mroot_path[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mpid_t[39m[38;2;221;221;221m [39m[38;2;221;221;221mpid[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mfork[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mpid[39m[38;2;221;221;221m [39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;255;0;255m0[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;221;221;221mexit[39m[38;2;221;221;221m([39m[38;2;255;0;255m0[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m[38;2;221;221;221m [39m[38;2;255;0;0melse[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;221;221;221mthrow[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221msystem_error[39m[38;2;221;221;221m([39m[38;2;221;221;221merrno[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mgeneric_category[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;135;206;235m"[39m[38;2;135;206;235mCANNOT FORK 1-STAGE[39m[38;2;135;206;235m"[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221msetsid[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;255;0;255m-1[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221mthrow[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221msystem_error[39m[38;2;221;221;221m([39m[38;2;221;221;221merrno[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mgeneric_category[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;135;206;235m"[39m[38;2;135;206;235mCANNOT FORK SETSID[39m[38;2;135;206;235m"[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m        [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mfilesystem[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mcurrent_path[39m[38;2;221;221;221m([39m[38;2;221;221;221mtmp_path[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;221;221;221mumask[39m[38;2;221;221;221m([39m[38;2;255;0;255m0[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mpid_t[39m[38;2;221;221;221m [39m[38;2;221;221;221mpid[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mfork[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mpid[39m[38;2;221;221;221m [39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;255;0;255m0[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;221;221;221mexit[39m[38;2;221;221;221m([39m[38;2;255;0;255m0[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m[38;2;221;221;221m [39m[38;2;255;0;0melse[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;221;221;221mthrow[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221msystem_error[39m[38;2;221;221;221m([39m[38;2;221;221;221merrno[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mgeneric_category[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;135;206;235m"[39m[38;2;135;206;235mCANNOT FORK 2-STAGE[39m[38;2;135;206;235m"[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m        [39m[38;2;221;221;221mclose[39m[38;2;221;221;221m([39m[38;2;255;0;255m0[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mclose[39m[38;2;221;221;221m([39m[38;2;255;0;255m1[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mclose[39m[38;2;221;221;221m([39m[38;2;255;0;255m2[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;229;229;229m#[39m[38;2;229;229;229mendif[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mdaemonizeFinalize[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m

[38;2;221;221;221mprotected[39m[38;2;221;221;221m:[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mvirtual[39m[38;2;221;221;221m [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mdaemonizePrepare[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;255;0;255m0[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mvirtual[39m[38;2;221;221;221m [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mdaemonizeFinalize[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;255;0;255m0[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m}[39m[38;2;221;221;221m;[39m


[38;2;0;255;0m// a basic network session manager (basic start and stop functionality)[39m

[38;2;221;221;221mclass[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m
[38;2;221;221;221m{[39m
[38;2;221;221;221mpublic[39m[38;2;221;221;221m:[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mvirtual[39m[38;2;221;221;221m [39m[38;2;221;221;221m~[39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;255;0;0mdefault[39m[38;2;221;221;221m;[39m

[38;2;221;221;221mprotected[39m[38;2;221;221;221m:[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;255;0;0mdefault[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m&[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mdelete[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m([39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m&[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mmoveInstFunc[39m[38;2;221;221;221m([39m[38;2;221;221;221m&[39m[38;2;221;221;221mother[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mthis[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221moperator[39m[38;2;221;221;221m=[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m&[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mdelete[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221moperator[39m[38;2;221;221;221m=[39m[38;2;221;221;221m([39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m&[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mmoveInstFunc[39m[38;2;221;221;221m([39m[38;2;221;221;221m&[39m[38;2;221;221;221mother[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mthis[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mreturn[39m[38;2;221;221;221m [39m[38;2;221;221;221m*[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m[38;2;221;221;221m;[39m


[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221minterfaces[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221madc_netsession_c[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mconstexpr[39m[38;2;221;221;221m [39m[38;2;255;0;0mstatic[39m[38;2;221;221;221m [39m[38;2;238;130;238mbool[39m[38;2;221;221;221m [39m[38;2;221;221;221manySessionPredicate[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mnetsession_ident_t[39m[38;2;221;221;221m&[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;255;0;0mreturn[39m[38;2;221;221;221m [39m[38;2;221;221;221mtrue[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m    [39m[38;2;0;255;0m// started sessions weak pointers[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221minterfaces[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221madc_netsession_c[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;255;0;0mstatic[39m[38;2;221;221;221m [39m[38;2;255;0;0minline[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221munordered_map[39m[38;2;221;221;221m<[39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m*[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mlist[39m[38;2;221;221;221m<[39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mweak_ptr[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m>[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221m_serverSessions[39m[38;2;221;221;221m{[39m[38;2;221;221;221m}[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mvector[39m[38;2;221;221;221m<[39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mfunction[39m[38;2;221;221;221m<[39m[38;2;238;130;238mbool[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221m>[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221m_stopSessionFunc[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mvector[39m[38;2;221;221;221m<[39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mfunction[39m[38;2;221;221;221m<[39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m*[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221m>[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221minterfaces[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221madc_netsession_c[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mstartSession[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mshared_ptr[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221msess_ptr[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;255;0;0mauto[39m[38;2;221;221;221m [39m[38;2;221;221;221mit[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221m_serverSessions[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m][39m[38;2;221;221;221m.[39m[38;2;221;221;221mend[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mit[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221m_serverSessions[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m][39m[38;2;221;221;221m.[39m[38;2;221;221;221memplace[39m[38;2;221;221;221m([39m[38;2;221;221;221mit[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221msess_ptr[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221msess_ptr[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221mstart[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;221;221;221m_stopSessionFunc[39m[38;2;221;221;221m.[39m[38;2;221;221;221memplace_back[39m[38;2;221;221;221m([39m[38;2;221;221;221m[[39m[38;2;221;221;221mit[39m[38;2;221;221;221m][39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m*[39m[38;2;221;221;221m [39m[38;2;221;221;221minst[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221m![39m[38;2;221;221;221mit[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221mexpired[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m[38;2;221;221;221m  [39m[38;2;0;255;0m// session is still existing[39m
[38;2;221;221;221m                [39m[38;2;255;0;0mauto[39m[38;2;221;221;221m [39m[38;2;221;221;221msess[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mit[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221mlock[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                [39m[38;2;221;221;221msess[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221mstop[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                [39m[38;2;221;221;221m_serverSessions[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221minst[39m[38;2;221;221;221m][39m[38;2;221;221;221m.[39m[38;2;221;221;221merase[39m[38;2;221;221;221m([39m[38;2;221;221;221mit[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                [39m[38;2;255;0;0mreturn[39m[38;2;221;221;221m [39m[38;2;221;221;221mtrue[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m[38;2;221;221;221m [39m[38;2;255;0;0melse[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;255;0;0mreturn[39m[38;2;221;221;221m [39m[38;2;221;221;221mfalse[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m


[38;2;221;221;221m        [39m[38;2;0;255;0m// define move-function only once per SessionT![39m
[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221m_serverSessions[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m][39m[38;2;221;221;221m.[39m[38;2;221;221;221msize[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;255;0;255m1[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m.[39m[38;2;221;221;221memplace_back[39m[38;2;221;221;221m([39m
[38;2;221;221;221m                [39m[38;2;221;221;221m[[39m[38;2;221;221;221m][39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m*[39m[38;2;221;221;221m [39m[38;2;221;221;221mnew_instance[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m*[39m[38;2;221;221;221m [39m[38;2;221;221;221mfrom_inst[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221m_serverSessions[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mnew_instance[39m[38;2;221;221;221m][39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221m_serverSessions[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mfrom_inst[39m[38;2;221;221;221m][39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                [39m[38;2;221;221;221m}[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m


[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221minterfaces[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221madc_netsession_c[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m,[39m
[38;2;221;221;221m              [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mpredicate[39m[38;2;221;221;221m<[39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mnetsession_ident_t[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221mPredT[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mdecltype[39m[38;2;221;221;221m([39m[38;2;221;221;221manySessionPredicate[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m)[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;238;130;238msize_t[39m[38;2;221;221;221m [39m[38;2;221;221;221mstopSessions[39m[38;2;221;221;221m([39m[38;2;221;221;221mPredT[39m[38;2;221;221;221m&[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mcomp_func[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221manySessionPredicate[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;238;130;238msize_t[39m[38;2;221;221;221m [39m[38;2;221;221;221mN[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;255;0;255m0[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mset[39m[38;2;221;221;221m<[39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mweak_ptr[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221mremove_wptr[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mfor[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;255;0;0mauto[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mwptr[39m[38;2;221;221;221m [39m[38;2;221;221;221m:[39m[38;2;221;221;221m [39m[38;2;221;221;221m_serverSessions[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m][39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mshared_ptr[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221msptr[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mwptr[39m[38;2;221;221;221m.[39m[38;2;221;221;221mlock[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221mconstexpr[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221msame_as[39m[38;2;221;221;221m<[39m[38;2;221;221;221mPredT[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mdecltype[39m[38;2;221;221;221m([39m[38;2;221;221;221manySessionPredicate[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m)[39m[38;2;221;221;221m>[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221msptr[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221mstop[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221mremove_wptr[39m[38;2;221;221;221m.[39m[38;2;221;221;221memplace[39m[38;2;221;221;221m([39m[38;2;221;221;221mwptr[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221m+[39m[38;2;221;221;221m+[39m[38;2;221;221;221mN[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                [39m[38;2;221;221;221m}[39m[38;2;221;221;221m [39m[38;2;255;0;0melse[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                    [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mforward[39m[38;2;221;221;221m<[39m[38;2;221;221;221mPredT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221mcomp_func[39m[38;2;221;221;221m)[39m[38;2;221;221;221m([39m[38;2;221;221;221msptr[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221mident[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                        [39m[38;2;221;221;221msptr[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221mstop[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                        [39m[38;2;221;221;221mremove_wptr[39m[38;2;221;221;221m.[39m[38;2;221;221;221memplace[39m[38;2;221;221;221m([39m[38;2;221;221;221mwptr[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                        [39m[38;2;221;221;221m+[39m[38;2;221;221;221m+[39m[38;2;221;221;221mN[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m                [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m[38;2;221;221;221m [39m[38;2;255;0;0melse[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m[38;2;221;221;221m  [39m[38;2;0;255;0m// remove already stopped sessions?!![39m
[38;2;221;221;221m                [39m[38;2;221;221;221mremove_wptr[39m[38;2;221;221;221m.[39m[38;2;221;221;221memplace[39m[38;2;221;221;221m([39m[38;2;221;221;221mwptr[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mfor[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;255;0;0mauto[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mwptr[39m[38;2;221;221;221m [39m[38;2;221;221;221m:[39m[38;2;221;221;221m [39m[38;2;221;221;221mremove_wptr[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m_serverSessions[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m][39m[38;2;221;221;221m.[39m[38;2;221;221;221merase[39m[38;2;221;221;221m([39m[38;2;221;221;221mwptr[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m


[38;2;221;221;221m        [39m[38;2;255;0;0mreturn[39m[38;2;221;221;221m [39m[38;2;221;221;221mN[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m


[38;2;221;221;221m    [39m[38;2;238;130;238msize_t[39m[38;2;221;221;221m [39m[38;2;221;221;221mstopAllSessions[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;238;130;238msize_t[39m[38;2;221;221;221m [39m[38;2;221;221;221mN[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;255;0;255m0[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mfor[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;255;0;0mauto[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mfunc[39m[38;2;221;221;221m [39m[38;2;221;221;221m:[39m[38;2;221;221;221m [39m[38;2;221;221;221m_stopSessionFunc[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221mfunc[39m[38;2;221;221;221m([39m[38;2;221;221;221mthis[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m?[39m[38;2;221;221;221m [39m[38;2;221;221;221m+[39m[38;2;221;221;221m+[39m[38;2;221;221;221mN[39m[38;2;221;221;221m [39m[38;2;221;221;221m:[39m[38;2;221;221;221m [39m[38;2;255;0;255m0[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m        [39m[38;2;221;221;221m_stopSessionFunc[39m[38;2;221;221;221m.[39m[38;2;221;221;221mclear[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m.[39m[38;2;221;221;221mclear[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m[38;2;221;221;221m  [39m[38;2;0;255;0m// there are nothing to move after stopping of all sessions[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mreturn[39m[38;2;221;221;221m [39m[38;2;221;221;221mN[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m


[38;2;221;221;221m    [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mmoveInstFunc[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m*[39m[38;2;221;221;221m [39m[38;2;221;221;221mto[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m*[39m[38;2;221;221;221m [39m[38;2;221;221;221mfrom[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mfrom[39m[38;2;221;221;221m [39m[38;2;221;221;221m![39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mto[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;255;0;0mfor[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;255;0;0mauto[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mfunc[39m[38;2;221;221;221m [39m[38;2;221;221;221m:[39m[38;2;221;221;221m [39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;221;221;221mfunc[39m[38;2;221;221;221m([39m[38;2;221;221;221mto[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mfrom[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m            [39m[38;2;221;221;221m_stopSessionFunc[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mfrom[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221m_stopSessionFunc[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mfrom[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m}[39m[38;2;221;221;221m;[39m


[38;2;255;0;0mstatic_assert[39m[38;2;221;221;221m([39m[38;2;221;221;221minterfaces[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221madc_logger_c[39m[38;2;221;221;221m<[39m[38;2;221;221;221mutils[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mAdcOstreamLogger[39m[38;2;221;221;221m<[39m[38;2;221;221;221m>[39m[38;2;221;221;221m>[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;135;206;235m"[39m[38;2;135;206;235m!!!!![39m[38;2;135;206;235m"[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m



[38;2;0;255;0m/*  very generic network server  */[39m

[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mIdentT[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mstring[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221minterfaces[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221madc_logger_c[39m[38;2;221;221;221m [39m[38;2;221;221;221mLoggerT[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mutils[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mAdcOstreamLogger[39m[38;2;221;221;221m<[39m[38;2;238;130;238mchar[39m[38;2;221;221;221m>[39m[38;2;221;221;221m>[39m
[38;2;221;221;221mclass[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m [39m[38;2;221;221;221m:[39m[38;2;221;221;221m [39m[38;2;221;221;221mpublic[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcPosixGenericDaemon[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mpublic[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mpublic[39m[38;2;221;221;221m [39m[38;2;221;221;221mLoggerT[39m
[38;2;221;221;221m{[39m
[38;2;221;221;221mpublic[39m[38;2;221;221;221m:[39m
[38;2;221;221;221m    [39m[38;2;255;0;0mtypedef[39m[38;2;221;221;221m [39m[38;2;221;221;221mIdentT[39m[38;2;221;221;221m [39m[38;2;221;221;221mserver_ident_t[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;255;0;0mtypedef[39m[38;2;221;221;221m [39m[38;2;221;221;221mLoggerT[39m[38;2;221;221;221m [39m[38;2;221;221;221mlogger_t[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221mLoggerCtorArgTs[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mserver_ident_t[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mid[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mLoggerCtorArgTs[39m[38;2;221;221;221m&[39m[38;2;221;221;221m&[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221mctor_args[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m:[39m[38;2;221;221;221m [39m[38;2;221;221;221m_serverIdent[39m[38;2;221;221;221m([39m[38;2;221;221;221mid[39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mLoggerT[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mforward[39m[38;2;221;221;221m<[39m[38;2;221;221;221mLoggerCtorArgTs[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221mctor_args[39m[38;2;221;221;221m)[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221mconstexpr[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mtraits[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformattable[39m[38;2;221;221;221m<[39m[38;2;221;221;221mIdentT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221mlogInfo[39m[38;2;221;221;221m([39m[38;2;135;206;235m"[39m[38;2;135;206;235mCreate ADC generic network server with ID: {} (addr = {}, thread = {})[39m[38;2;135;206;235m"[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mid[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m,[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221mutils[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mAdcThisThreadId[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m[38;2;221;221;221m [39m[38;2;255;0;0melse[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221mlogInfo[39m[38;2;221;221;221m([39m[38;2;135;206;235m"[39m[38;2;135;206;235mCreate ADC generic network server (addr = {}, thread = {})[39m[38;2;135;206;235m"[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m,[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221mutils[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mAdcThisThreadId[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m


[38;2;221;221;221m    [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m&[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mdelete[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m([39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m&[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m:[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcPosixGenericDaemon[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mLoggerT[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mlogDebug[39m[38;2;221;221;221m([39m[38;2;135;206;235m"[39m[38;2;135;206;235mMove ADC server class: this = {}, target = {}[39m[38;2;135;206;235m"[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221m&[39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mthis[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221m&[39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;255;0;0mreturn[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m        [39m[38;2;221;221;221m_serverIdent[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mother[39m[38;2;221;221;221m.[39m[38;2;221;221;221m_serverIdent[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m_stopListenFunc[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mother[39m[38;2;221;221;221m.[39m[38;2;221;221;221m_stopListenFunc[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mfor[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;255;0;0mauto[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mfunc[39m[38;2;221;221;221m [39m[38;2;221;221;221m:[39m[38;2;221;221;221m [39m[38;2;221;221;221mother[39m[38;2;221;221;221m.[39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221mfunc[39m[38;2;221;221;221m([39m[38;2;221;221;221m&[39m[38;2;221;221;221mother[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mthis[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m        [39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mother[39m[38;2;221;221;221m.[39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mvirtual[39m[38;2;221;221;221m [39m[38;2;221;221;221m~[39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221mconstexpr[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mtraits[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformattable[39m[38;2;221;221;221m<[39m[38;2;221;221;221mIdentT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221mlogInfo[39m[38;2;221;221;221m([39m[38;2;135;206;235m"[39m[38;2;135;206;235mDelete ADC generic network server with ID: {} (addr = {}, thread = {})[39m[38;2;135;206;235m"[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m_serverIdent[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m,[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221mutils[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mAdcThisThreadId[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m[38;2;221;221;221m [39m[38;2;255;0;0melse[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221mlogInfo[39m[38;2;221;221;221m([39m[38;2;135;206;235m"[39m[38;2;135;206;235mDelete ADC generic network server (addr = {}, thread = {})[39m[38;2;135;206;235m"[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m,[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221mutils[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mAdcThisThreadId[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221moperator[39m[38;2;221;221;221m=[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m&[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mdelete[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221moperator[39m[38;2;221;221;221m=[39m[38;2;221;221;221m([39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m&[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mlogDebug[39m[38;2;221;221;221m([39m[38;2;135;206;235m"[39m[38;2;135;206;235mAssign-move ADC server class: this = {}, target = {}[39m[38;2;135;206;235m"[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221m&[39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mthis[39m[38;2;221;221;221m [39m[38;2;221;221;221m![39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221m&[39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221mAdcPosixGenericDaemon[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221moperator[39m[38;2;221;221;221m=[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221mAdcNetSessionManager[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221moperator[39m[38;2;221;221;221m=[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mother[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m            [39m[38;2;221;221;221m_serverIdent[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mother[39m[38;2;221;221;221m.[39m[38;2;221;221;221m_serverIdent[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m_stopListenFunc[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mother[39m[38;2;221;221;221m.[39m[38;2;221;221;221m_stopListenFunc[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m            [39m[38;2;255;0;0mfor[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;255;0;0mauto[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mfunc[39m[38;2;221;221;221m [39m[38;2;221;221;221m:[39m[38;2;221;221;221m [39m[38;2;221;221;221mother[39m[38;2;221;221;221m.[39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;221;221;221mfunc[39m[38;2;221;221;221m([39m[38;2;221;221;221m&[39m[38;2;221;221;221mother[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mthis[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m            [39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mother[39m[38;2;221;221;221m.[39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mreturn[39m[38;2;221;221;221m [39m[38;2;221;221;221m*[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mvirtual[39m[38;2;221;221;221m [39m[38;2;221;221;221mserver_ident_t[39m[38;2;221;221;221m [39m[38;2;221;221;221mident[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;255;0;0mconst[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;255;0;0mreturn[39m[38;2;221;221;221m [39m[38;2;221;221;221m_serverIdent[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m    [39m[38;2;0;255;0m// start accepting remote connections, create and start given network session[39m
[38;2;221;221;221m    [39m[38;2;0;255;0m// It must be assumed that this is asynchronous operation!!![39m
[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221minterfaces[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221madc_netsession_c[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221mAcceptorCtorArgTs[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mstart[39m[38;2;221;221;221m([39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mnetsession_ident_t[39m[38;2;221;221;221m [39m[38;2;221;221;221mid[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mnetsession_ctx_t[39m[38;2;221;221;221m [39m[38;2;221;221;221msess_ctx[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mAcceptorCtorArgTs[39m[38;2;221;221;221m&[39m[38;2;221;221;221m&[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221mctor_args[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mrequires[39m[38;2;221;221;221m [39m[38;2;221;221;221mtraits[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221madc_hashable_c[39m[38;2;221;221;221m<[39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mnetsession_ident_t[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mlogDebug[39m[38;2;221;221;221m([39m[38;2;135;206;235m"[39m[38;2;135;206;235mCall {}[39m[38;2;135;206;235m"[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m__PRETTY_FUNCTION__[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221m![39m[38;2;221;221;221m_isListening[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m][39m[38;2;221;221;221m[[39m[38;2;221;221;221mid[39m[38;2;221;221;221m][39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;255;0;0mauto[39m[38;2;221;221;221m [39m[38;2;221;221;221macceptor[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmake_shared[39m[38;2;221;221;221m<[39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mnetservice_t[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221macceptor_t[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m
[38;2;221;221;221m                [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mforward[39m[38;2;221;221;221m<[39m[38;2;221;221;221mAcceptorCtorArgTs[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221mctor_args[39m[38;2;221;221;221m)[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m            [39m[38;2;221;221;221m_stopListenFunc[39m[38;2;221;221;221m.[39m[38;2;221;221;221memplace_back[39m[38;2;221;221;221m([39m[38;2;221;221;221m[[39m[38;2;221;221;221macceptor[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mid[39m[38;2;221;221;221m][39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m*[39m[38;2;221;221;221m [39m[38;2;221;221;221minst[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221merror_code[39m[38;2;221;221;221m [39m[38;2;221;221;221mec[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                [39m[38;2;221;221;221macceptor[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221mclose[39m[38;2;221;221;221m([39m[38;2;221;221;221mec[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m                [39m[38;2;221;221;221m_isListening[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221minst[39m[38;2;221;221;221m][39m[38;2;221;221;221m[[39m[38;2;221;221;221mid[39m[38;2;221;221;221m][39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mfalse[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m            [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221mconstexpr[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221mtraits[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformattable[39m[38;2;221;221;221m<[39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mnetsession_ident_t[39m[38;2;221;221;221m>[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;221;221;221mlogInfo[39m[38;2;221;221;221m([39m
[38;2;221;221;221m                    [39m[38;2;135;206;235m"[39m[38;2;135;206;235mStart listening for client connections at <{}> endpoint (session ID: {}, server addr = {}, thread [39m[38;2;135;206;235m"[39m
[38;2;221;221;221m                    [39m[38;2;135;206;235m"[39m[38;2;135;206;235m= {})[39m[38;2;135;206;235m"[39m[38;2;221;221;221m,[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221macceptor[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221mlocalEndpoint[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mid[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mutils[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mAdcThisThreadId[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m[38;2;221;221;221m [39m[38;2;255;0;0melse[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;221;221;221mlogInfo[39m[38;2;221;221;221m([39m[38;2;135;206;235m"[39m[38;2;135;206;235mStart listening for client connections at <{}> endpoint (server addr = {}, thread = {})[39m[38;2;135;206;235m"[39m[38;2;221;221;221m,[39m
[38;2;221;221;221m                        [39m[38;2;221;221;221macceptor[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221mlocalEndpoint[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mutils[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mAdcThisThreadId[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m            [39m[38;2;221;221;221mdoAccept[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221macceptor[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mid[39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221msess_ctx[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m        [39m[38;2;0;255;0m// only once per SessionT[39m
[38;2;221;221;221m        [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221m_isListening[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m][39m[38;2;221;221;221m.[39m[38;2;221;221;221msize[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;255;0;255m1[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m.[39m[38;2;221;221;221memplace_back[39m[38;2;221;221;221m([39m
[38;2;221;221;221m                [39m[38;2;221;221;221m[[39m[38;2;221;221;221m][39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m*[39m[38;2;221;221;221m [39m[38;2;221;221;221mnew_instance[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m*[39m[38;2;221;221;221m [39m[38;2;221;221;221mfrom_inst[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221m_isListening[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mnew_instance[39m[38;2;221;221;221m][39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221m_isListening[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mfrom_inst[39m[38;2;221;221;221m][39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                [39m[38;2;221;221;221m}[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m[38;2;221;221;221m;[39m


[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221minterfaces[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221madc_netsession_c[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;238;130;238mbool[39m[38;2;221;221;221m [39m[38;2;221;221;221misListening[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mnetsession_ident_t[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mid[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;255;0;0mconst[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;255;0;0mreturn[39m[38;2;221;221;221m [39m[38;2;221;221;221m_isListening[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m][39m[38;2;221;221;221m[[39m[38;2;221;221;221mid[39m[38;2;221;221;221m][39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mvirtual[39m[38;2;221;221;221m [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mstart[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;255;0;255m0[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mvirtual[39m[38;2;221;221;221m [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mstop[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;255;0;0mfor[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;255;0;0mauto[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mfunc[39m[38;2;221;221;221m [39m[38;2;221;221;221m:[39m[38;2;221;221;221m [39m[38;2;221;221;221m_stopListenFunc[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m            [39m[38;2;221;221;221mfunc[39m[38;2;221;221;221m([39m[38;2;221;221;221mthis[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m        [39m[38;2;221;221;221m_stopListenFunc[39m[38;2;221;221;221m.[39m[38;2;221;221;221mclear[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m        [39m[38;2;221;221;221mstopAllSessions[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m[38;2;221;221;221m;[39m


[38;2;221;221;221m    [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;255;255;0msetAcceptTimeout[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mtraits[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221madc_time_duration_c[39m[38;2;221;221;221m [39m[38;2;255;0;0mauto[39m[38;2;221;221;221m&[39m[38;2;221;221;221m [39m[38;2;221;221;221mtimeout[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m_acceptTimeout[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mchrono[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mduration_cast[39m[38;2;221;221;221m<[39m[38;2;221;221;221mdecltype[39m[38;2;221;221;221m([39m[38;2;221;221;221m_acceptTimeout[39m[38;2;221;221;221m)[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221mtimeout[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m


[38;2;221;221;221m    [39m[38;2;255;0;0mauto[39m[38;2;221;221;221m [39m[38;2;221;221;221mgetAcceptTimeout[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;255;0;0mconst[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;255;0;0mreturn[39m[38;2;221;221;221m [39m[38;2;221;221;221m_acceptTimeout[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m


[38;2;221;221;221m    [39m[38;2;0;255;0m// helper methods for logging[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221mtraits[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformattable[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221mTs[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mlogMessage[39m[38;2;221;221;221m([39m[38;2;221;221;221mLoggerT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mloglevel_t[39m[38;2;221;221;221m [39m[38;2;221;221;221mlevel[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformat_string[39m[38;2;221;221;221m<[39m[38;2;221;221;221mTs[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221mfmt[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mTs[39m[38;2;221;221;221m&[39m[38;2;221;221;221m&[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221margs[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mLoggerT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mlogMessage[39m[38;2;221;221;221m([39m[38;2;221;221;221mlevel[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformat[39m[38;2;221;221;221m([39m[38;2;221;221;221mfmt[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mforward[39m[38;2;221;221;221m<[39m[38;2;221;221;221mTs[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221margs[39m[38;2;221;221;221m)[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221mtraits[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformattable[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221mTs[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mlogInfo[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformat_string[39m[38;2;221;221;221m<[39m[38;2;221;221;221mTs[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221mfmt[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mTs[39m[38;2;221;221;221m&[39m[38;2;221;221;221m&[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221margs[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mLoggerT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mlogInfo[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformat[39m[38;2;221;221;221m([39m[38;2;221;221;221mfmt[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mforward[39m[38;2;221;221;221m<[39m[38;2;221;221;221mTs[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221margs[39m[38;2;221;221;221m)[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221mtraits[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformattable[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221mTs[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mlogDebug[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformat_string[39m[38;2;221;221;221m<[39m[38;2;221;221;221mTs[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221mfmt[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mTs[39m[38;2;221;221;221m&[39m[38;2;221;221;221m&[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221margs[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mLoggerT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mlogDebug[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformat[39m[38;2;221;221;221m([39m[38;2;221;221;221mfmt[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mforward[39m[38;2;221;221;221m<[39m[38;2;221;221;221mTs[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221margs[39m[38;2;221;221;221m)[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221mtraits[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformattable[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221mTs[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mlogError[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformat_string[39m[38;2;221;221;221m<[39m[38;2;221;221;221mTs[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221mfmt[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mTs[39m[38;2;221;221;221m&[39m[38;2;221;221;221m&[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m [39m[38;2;221;221;221margs[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221mLoggerT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mlogError[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformat[39m[38;2;221;221;221m([39m[38;2;221;221;221mfmt[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mforward[39m[38;2;221;221;221m<[39m[38;2;221;221;221mTs[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221margs[39m[38;2;221;221;221m)[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m.[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m

[38;2;221;221;221mprotected[39m[38;2;221;221;221m:[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mchrono[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mseconds[39m[38;2;221;221;221m [39m[38;2;221;221;221m_acceptTimeout[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mchrono[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mseconds[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmax[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m    [39m[38;2;0;255;0m// template <interfaces::adc_netsession_c SessionT>[39m
[38;2;221;221;221m    [39m[38;2;0;255;0m// inline static std::unordered_map<const AdcGenericNetServer*, bool> _isListening{};[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221minterfaces[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221madc_netsession_c[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;255;0;0minline[39m[38;2;221;221;221m [39m[38;2;255;0;0mstatic[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221munordered_map[39m[38;2;221;221;221m<[39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m*[39m[38;2;221;221;221m,[39m
[38;2;221;221;221m                                     [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221munordered_map[39m[38;2;221;221;221m<[39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mnetsession_ident_t[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;238;130;238mbool[39m[38;2;221;221;221m>[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m        [39m[38;2;221;221;221m_isListening[39m[38;2;221;221;221m{[39m[38;2;221;221;221m}[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mvector[39m[38;2;221;221;221m<[39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mfunction[39m[38;2;221;221;221m<[39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221m>[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221m_stopListenFunc[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mvector[39m[38;2;221;221;221m<[39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mfunction[39m[38;2;221;221;221m<[39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m([39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m*[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;255;0;0mconst[39m[38;2;221;221;221m [39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221m>[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221m_moveCtorFunc[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mserver_ident_t[39m[38;2;221;221;221m [39m[38;2;221;221;221m_serverIdent[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m    [39m[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mAT[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mIDT[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mCTXT[39m[38;2;221;221;221m>[39m
[38;2;221;221;221m    [39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m [39m[38;2;221;221;221mdoAccept[39m[38;2;221;221;221m([39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mshared_ptr[39m[38;2;221;221;221m<[39m[38;2;221;221;221mAT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m [39m[38;2;221;221;221macceptor[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mIDT[39m[38;2;221;221;221m [39m[38;2;221;221;221mid[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mCTXT[39m[38;2;221;221;221m [39m[38;2;221;221;221msess_ctx[39m[38;2;221;221;221m)[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m        [39m[38;2;221;221;221macceptor[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221masyncAccept[39m[38;2;221;221;221m([39m
[38;2;221;221;221m            [39m[38;2;221;221;221m[[39m[38;2;221;221;221macceptor[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mid[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mid[39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221msess_ctx[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221msess_ctx[39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mthis[39m[38;2;221;221;221m][39m[38;2;221;221;221m([39m
[38;2;221;221;221m                [39m[38;2;255;0;0mauto[39m[38;2;221;221;221m [39m[38;2;221;221;221mec[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mnetservice_t[39m[38;2;221;221;221m [39m[38;2;221;221;221msrv[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221mmutable[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                [39m[38;2;255;0;0mif[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;221;221;221m![39m[38;2;221;221;221mec[39m[38;2;221;221;221m)[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221mlogInfo[39m[38;2;221;221;221m([39m
[38;2;221;221;221m                        [39m[38;2;135;206;235m"[39m[38;2;135;206;235mClient connection is succesfully accepted! Client endpoint: {} (server addr = {}, thread = [39m[38;2;135;206;235m"[39m
[38;2;221;221;221m                        [39m[38;2;135;206;235m"[39m[38;2;135;206;235m{})[39m[38;2;135;206;235m"[39m[38;2;221;221;221m,[39m
[38;2;221;221;221m                        [39m[38;2;221;221;221msrv[39m[38;2;221;221;221m.[39m[38;2;221;221;221mremoteEndpoint[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221m([39m[38;2;238;130;238mvoid[39m[38;2;221;221;221m*[39m[38;2;221;221;221m)[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mutils[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mAdcThisThreadId[39m[38;2;221;221;221m([39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m                    [39m[38;2;255;0;0mauto[39m[38;2;221;221;221m [39m[38;2;221;221;221msess[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmake_shared[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221mid[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221msrv[39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221msess_ctx[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221mstartSession[39m[38;2;221;221;221m([39m[38;2;221;221;221msess[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m                    [39m[38;2;221;221;221m_isListening[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m][39m[38;2;221;221;221m[[39m[38;2;221;221;221mid[39m[38;2;221;221;221m][39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mtrue[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221mdoAccept[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m([39m[38;2;221;221;221macceptor[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221mid[39m[38;2;221;221;221m)[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mmove[39m[38;2;221;221;221m([39m[38;2;221;221;221msess_ctx[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                [39m[38;2;221;221;221m}[39m[38;2;221;221;221m [39m[38;2;255;0;0melse[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m                    [39m[38;2;221;221;221mthis[39m[38;2;221;221;221m-[39m[38;2;221;221;221m>[39m[38;2;221;221;221mlogError[39m[38;2;221;221;221m([39m[38;2;135;206;235m"[39m[38;2;135;206;235mCannot start accepting connection: {}[39m[38;2;135;206;235m"[39m[38;2;221;221;221m,[39m
[38;2;221;221;221m                                   [39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mnetservice_t[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mformattableError[39m[38;2;221;221;221m([39m[38;2;221;221;221mec[39m[38;2;221;221;221m)[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m                    [39m[38;2;221;221;221m_isListening[39m[38;2;221;221;221m<[39m[38;2;221;221;221mSessionT[39m[38;2;221;221;221m>[39m[38;2;221;221;221m[[39m[38;2;221;221;221mthis[39m[38;2;221;221;221m][39m[38;2;221;221;221m[[39m[38;2;221;221;221mid[39m[38;2;221;221;221m][39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mfalse[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m                [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m}[39m[38;2;221;221;221m,[39m
[38;2;221;221;221m            [39m[38;2;221;221;221m_acceptTimeout[39m[38;2;221;221;221m)[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221m}[39m
[38;2;221;221;221m}[39m[38;2;221;221;221m;[39m


[38;2;221;221;221mnamespace[39m[38;2;221;221;221m [39m[38;2;221;221;221minterfaces[39m
[38;2;221;221;221m{[39m

[38;2;221;221;221mtemplate[39m[38;2;221;221;221m [39m[38;2;221;221;221m<[39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mT[39m[38;2;221;221;221m>[39m
[38;2;221;221;221mconcept[39m[38;2;221;221;221m [39m[38;2;221;221;221madc_generic_netserver_c[39m[38;2;221;221;221m [39m[38;2;221;221;221m=[39m[38;2;221;221;221m [39m[38;2;221;221;221mrequires[39m[38;2;221;221;221m [39m[38;2;221;221;221m{[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mserver_ident_t[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m    [39m[38;2;221;221;221mrequires[39m[38;2;221;221;221m [39m[38;2;221;221;221mstd[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mderived_from[39m[38;2;221;221;221m<[39m[38;2;221;221;221mT[39m[38;2;221;221;221m,[39m[38;2;221;221;221m [39m[38;2;221;221;221madc[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mAdcGenericNetServer[39m[38;2;221;221;221m<[39m[38;2;221;221;221mtypename[39m[38;2;221;221;221m [39m[38;2;221;221;221mT[39m[38;2;221;221;221m:[39m[38;2;221;221;221m:[39m[38;2;221;221;221mserver_ident_t[39m[38;2;221;221;221m>[39m[38;2;221;221;221m>[39m[38;2;221;221;221m;[39m
[38;2;221;221;221m}[39m[38;2;221;221;221m;[39m

[38;2;221;221;221m}[39m[38;2;221;221;221m  [39m[38;2;0;255;0m// namespace interfaces[39m


[38;2;221;221;221m}[39m[38;2;221;221;221m  [39m[38;2;0;255;0m// namespace adc[39m
