lh6t EMF^l @   MRpARIALY|@Xҏuw 7lDl@Dl  I@l-0M;l@MXUw%wh2x-ȸMxdv% P6P666PP6665UTAUL|cd TcpSocketServiceGroup% ( RpARIALY|@|ҏDuw\ 7lDl@Dl@ I@l|;l{;lM;l-;lOLARIALw @5dv% '% &%  ! &%                     % " ( '% &% 9 +d=:0% ( % ( +a@73RpARIALY|@|L@M*w-8M@M(-Uw@*ww-@MM@MOLW|H4 H4-<D\|$W|G}w-@M@M@MUw%w 2x-Mx@Mdv% T$Ai7$Lservicegroups::TcpSocketServiceGroup% a%67%   @@TX"AfLP+ T*Aw"LTcpSocketServiceGroup(int, String)TX"AfLP+ T$*Aw$LgetServiceGroupFamilyName() : String  TX"AfLP+ T*AwLregisterClient(Socket) : voidTX"AfLP+ T*AwLgetFreeHandlersCount() : intTX"AfLP+ T*AwLgetTotalHandlersCount() : intTX"AfLP+ T*AwL|getTaskQueueSize() : intTX"AfLP+ T*AwL|getGroupName() : String TX"AfLP+ T*gAwLlgetPort() : intTX"AfLP+ T*AwLunloadService(String) : voidTX" AfLP+ T* AwLxisRunning() : booleanTX!"-AfLP+ T*!-AwLgetServiceNames() : String[] TX.":AfLP+ T*.:AwLtgetLogger() : LoggerTX;"GAfLP+ T*;GAwLgetService(String) : ServiceTXH"TAftLP+ T*HTAwtL|runServices() : booleanTXU"aAfgLP+ T*UzaAwgLpshutDown() : voidTXb"nAfZLP+ T*bnAwZLclosePluginStore() : voidTXo"{AfMLP+ T*o{AwMLgetAddress() : InetAddress '% &% +% ( % ( +RpARIALY|@|L>L*w->L>L(-Uw@*ww->L>L0]wDl@ I@l-M;l->L>L>LUw%w 2x-x>Ldv% Tp!7-AcLXThread% % T10<ALxthreads::ManagedThread % y6y TXGSAuLP- TGSAuLpdesiredState: int _6_ @@TXamA[LP+ Ta#mA[LtpauseThread() : voidTXnzANLP+ Tn)zANLxresumeThread() : void TX{AALP+ T{AALtstopThread() : voidTXA4LP# T6A4L|keepRunning() : boolean '% &% +\:% ( % ( +Y=% TyAIL|threads::TcpKernelThread% 6Y TXntALP- TALssd: TcpSocketServiceGroupTXnt ALP- T ALserverSocket: ServerSocketTXn tALP- T ALpdesiredState: intTXnt$ALP- T$ALlwrk: ThreadPoolTXn%t1ALP- T%1ALlrsl: ThreadPool 6Y @@TXn?wKA}LP+ T?KA}LLTcpKernelThread(TcpSocketServiceGroup, ServerSocket, ThreadPool, ThreadPool)TXnLwXApLP+ TLXAp Ldrun() : voidTXnYweAcLP+ T8Y<eAc'LgetDescriptor() : TcpSocketServiceGroup '% &% +b\ % ( % ( % % +eY TZfAb LdinterfaceARpARIALY|@|L>L*w->L>L(-Uw@*ww->L>L>L0]wDl@ I@l-M;l->L>L>LUw%w 2x->Lx>Ldv% Tj tARLxthreads::ThreadStates% E6YE TXyACLP+ TyACLpRUNNING: int = 0TXA6LP+ TA6LlSLEEP: int = 1TXA)LP+ TA)LhSTOP: int = 2  @@ &% '% V0@  ' % V(4@ % % T!A!LThis thread handles new client's hT ALconnection and makes new  T-A!LResolveConnectionTask. Then this T .A LResolveConnectionTask queued to T+A"LrelolversThreadPool task queue in T ALxTcpSocketServiceGroup( ( ( T NLZAmn L`"extends"&% '% V04CC 7' % V(77 C % % TD9A)LThis is a thread, that con be stopped or T89A'Lpaused only by checking specified flag.TD9A)LIt uses ThreadStates constants to define wT9ALdesired state of ManagedThread. ( ( ( '% &% +O(% ( % ( +L+% TATLtasks::ResolveConnectionTask% 6L TXALP- TA LhtName: String TXALP- TA LhpName: String TX(ALP- T(A  Lhsock: Socket TX)5ALP- T)N5A LservGrp: AbstractServiceGroupTX6BALP- T6BA Lppool: ThreadPool p6Lp @@TXP\AlLP+ TP\A l?LResolveConnectionTask(AbstractServiceGroup, Socket, ThreadPool)TX]iA_LP+ T]iA _LpgetName() : String TXjvARLP+ TjRvA RLgetTaskProducerName() : String TXwAELP+ TwA ELtperformWork() : void TXA8LP- TMA 8LreadWord(InputStream) : byte[]   TSA* L`"produces"&% <6    % ( &% I6>    % ( &% 8\666  % TnALt+currentServerThread%   % ( &% y6NNV( WLN    % ( &% 68[8[8[6HX8[6@N  % TdO[A;mLT-ssd%   % ( % ( ( % ( % (