lџ„Эz:n EMFшS@№т€Љ  џџџџ іџџџRpіџџџМARIALY|@јоѓXѕФѕвјоѓШѕџŒѕСuсwіџЄѕф’ё Œ7lЈИDl@ї˜ИDlˆѕ ї I@lџџї-їїїшK>ііїў;lи5=XїUјw%јwџџџџhї2x-р‡-џџџџЉxdv% љџџџ6љџџџќџџ6сќџџ6с6љџџџљџџџўџџџ6}ўџџџ6Š 6Š5ўџџџ Tм…њAњСўџџџLџџџџџџџџ|cd Connection Resolution% €( RpіџџџARIAL§Y|@јоѓє|євјоѓ€єџDєСuсwМєџ\єф’ё Œ7lЈИDl@аѕ˜ИDl@єиѕ I@lџџРѕп|;lаѕаѕРѕ{;l№S>МєМєаѕў;l-Я;lМєИN=ARIALєwАФї @ј5dv% 'ќђу% &%  ! &%   џџџ  џџџ  џџџ  џџџ% " џџџџ( 'РПР% &РПР% 9 +9И§џџzюќџџ% ( % ( +6Л§џџwёќџџRpіџџџМARIALY|@јоѓє|єLѕи5=*јw-а5=и5=(ѕˆ-рѕUјw@*јwџџџџ№ѕЧќw-и5=Р5=и5=ИN=Аѕћ’W|8dz Є8d-аѕаѕѕ<іD\|€$W|џџџџG}єw-и5=и5=и5=іUјw%јwџџџџ і2x-Р5=џџџџЉxи5=dv% TЈЗb mњAњС­В§џџLџџџџџџџџlmetas::TaskMetae  % 6 §џџ6w §џџ ‹TXExK„њAњС;œ§џџLџџџџџџџџP- TЌVx­„њAњСLœ§џџLџџџџџџџџlparams: HashMap  TXE…K‘њAњС;§џџLџџџџџџџџP- T V…•‘њAњСL§џџLџџџџџџџџhtaskCode: intTXE’NžњAњС;‚§џџLџџџџџџџџP+ ThV’fžњAњСL‚§џџ/LџџџџџџџџЌPLUGIN_NAME_OPTION_NAME: String = "PluginName"   &‹% Lv§џџ6\v§џџ% ( TXEŸNЋњAњС;u§џџLџџџџџџџџP+ TŒVŸ}ЋњAњСLu§џџ5LџџџџџџџџИPLUGIN_VERSION_OPTION_NAME: String = "PluginVersion" &‹% Li§џџ6si§џџ% ( TXEЌNИњAњС;h§џџLџџџџџџџџP+ THVЌGИњAњСLh§џџ*Lџџџџџџџџ REMOTEIP_OPTION_NAME: String = "RemoteIP"   &‹% L\§џџ6=\§џџ% (  6R§џџ6wR§џџ @@TXEЦNвњAњС;N§џџLџџџџџџџџP+ T\VЦ&вњAњСLN§џџ-LџџџџџџџџЈsetAdditionalParameter(String, String) : void TXEгNпњAњС;A§џџLџџџџџџџџP+ TќVгнпњAњСLA§џџLџџџџџџџџˆgetParameter(String) : Stringџџ TXEрNьњAњС;4§џџLџџџџџџџџP+ TРVрЎьњAњСL4§џџLџџџџџџџџtgetTaskCode() : intTXEэNљњAњС;'§џџLџџџџџџџџP+ T<VэљњAњСL'§џџ(LџџџџџџџџœmakeMetaString(int, List, List) : String  &@@% L§џџ6ќ§џџ% ( TXEњNњAњС;§џџLџџџџџџџџP+ TЬVњУњAњСL§џџLџџџџџџџџxTaskMeta(InputStream)   'РПР% &РПР% +џџџWўџџ% ( % ( + џџџZўџџ% TДgТњAњС^џџџLџџџџџџџџptasks::HandleTask% №ўџџ6№ўџџ ‹TX$(*4њAњСьўџџLџџџџџџџџP- Tф5(Г4њAњС+ьўџџLџџџџџџџџ€handler: ServiceRunnableџџTX$5*AњAњСпўџџLџџџџџџџџP- T 55|AњAњС+пўџџLџџџџџџџџhpName: String  Щўџџ6Щўџџ @@TX$O-[њAњСХўџџLџџџџџџџџP+ TP5O[њAњС+Хўџџ+LџџџџџџџџЄHandleTask(ServiceRunnable, String, String)TX$\-hњAњСИўџџLџџџџџџџџP+ TИ5\‹hњAњС+ИўџџLџџџџџџџџpgetName() : String TX$i-uњAњСЋўџџLџџџџџџџџP+ T5iЪuњAњС+ЋўџџLџџџџџџџџˆgetTaskProducerName() : String TX$v-‚њAњСžўџџLџџџџџџџџP+ TФ5v’‚њAњС+žўџџLџџџџџџџџtperformWork() : void  'РПР% &РПР% +їўџџ\?ўџџ% ( % ( +њўџџYBўџџ% Tєj#.њAњСaёўџџLџџџџџџџџ„tasks::ResolveConnectionTask% пўџџ6Yпўџџ ‹TX9EњAњСлўџџLџџџџџџџџP- T !9eEњAњСлўџџLџџџџџџџџhtName: String TXFRњAњСЮўџџLџџџџџџџџP- T !FhRњAњСЮўџџLџџџџџџџџhpName: String TXS_њAњССўџџLџџџџџџџџP- Tœ!S\_њAњССўџџ Lџџџџџџџџhsock: SocketTX`lњAњСДўџџLџџџџџџџџP- T!`ВlњAњСДўџџLџџџџџџџџˆservGrp: AbstractServiceGroupTXmyњAњСЇўџџLџџџџџџџџP- TД!mwyњAњСЇўџџLџџџџџџџџppool: ThreadPool ‘ўџџ6Y‘ўџџ @@TX‡“њAњСўџџLџџџџџџџџP+ TШ!‡_“њAњСўџџ?LџџџџџџџџЬResolveConnectionTask(AbstractServiceGroup, Socket, ThreadPool)TX” њAњС€ўџџLџџџџџџџџP+ TИ!”w њAњС€ўџџLџџџџџџџџpgetName() : String TXЁ­њAњСsўџџLџџџџџџџџP+ T!ЁЖ­њAњСsўџџLџџџџџџџџˆgetTaskProducerName() : String TXЎКњAњСfўџџLџџџџџџџџP+ TФ!Ў~КњAњСfўџџLџџџџџџџџtperformWork() : void TXЛЧњAњСYўџџLџџџџџџџџP- T!ЛБЧњAњСYўџџLџџџџџџџџˆreadWord(InputStream) : byte[]   &€€€% 'їѓї% V0ЛЌd§Yџ§АўЂАўЂMџ–Yџ'дад% V( ЛЌЧ–Yџ–MџЂMџ% % Tш Щ‘ењAњСKџџџLџџџџџџџџ€ResolveConnectionTask are T жЋтњAњС>џџџ"Lџџџџџџџџcreated for each incoming client`s Tє у’яњAњС1џџџLџџџџџџџџ„connection by service group Tќ №“ќњAњС$џџџLџџџџџџџџˆbinded to specified port and T §™ њAњСџџџLџџџџџџџџŒIP-adress. This instance reads T   ЊњAњС џџџ LџџџџџџџџŒTaskMeta from socket connection   T ˜#њAњС§ўџџLџџџџџџџџˆand tries to understand which Tи $x0њAњС№ўџџLџџџџџџџџ|plugin can handle this T  1Ђ=њAњСуўџџ#Lџџџџџџџџ”connection. After this, it creates Tќ >˜JњAњСжўџџLџџџџџџџџˆnew HandleTask and put it to T KЁWњAњСЩўџџ"Lџџџџџџџџthread pool of it's service group.( ( ( TpšуЖяњAњС1ўџџLџџџџџџџџX"uses"Tˆв—ЃњAњСШ}ўџџ Lџџџџџџџџ`"produces"&€€€% 'їѓї% V0ркs4§ЁќаЁќа(§Ф4§'дад% V(ЮркьФ4§Ф(§а(§% % TDюкњњAњС &§џџ)Lџџџџџџџџ TaskMeta provides access to parameters of  T$ћЦњAњС §џџ$Lџџџџџџџџ”connection. ResolveConnection gives T8ЩњAњС  §џџ'LџџџџџџџџœInputStream to a TaskMeta to read it`s џџ  T В!њAњС џќџџ#Lџџџџџџџџ”String representation from socket.  T0"Я.њAњС ђќџџ&Lџџџџџџџџ˜TaskMeta is a wrapper of HashMap with   T/Џ;њAњС хќџџ"Lџџџџџџџџproperties of connection, such as:TЬ<~HњAњС иќџџLџџџџџџџџx"PluginVersion=1002",TIФUњAњС Ыќџџ!Lџџџџџџџџ"PluginName="com.plug.CoolPlugin"=  ( ( ( &€€€% 'їѓї% V0И‹:яЎ‰ўЎ%ў0%ў0}ў$‰ў'дад% V(.‹:—$‰ў$}ў0}ў% % TФН™#ЅњAњСГ{ўџџLџџџџџџџџtHandleTask executes TФНІ ВњAњСГnўџџLџџџџџџџџtServiceRunnable for TфНГ1ПњAњСГaўџџLџџџџџџџџ€corresponding service to џџTфНР3ЬњAњСГTўџџLџџџџџџџџ€handle incoming client's  TˆНЭёйњAњСГGўџџ Lџџџџџџџџ`connection( ( (  0`Tl#8/њAњСёџџџLџџџџџџџџXName:E TЬQ#М/њAњСGёџџџLџџџџџџџџxConnection ResolutionTx0;<њAњСфџџџLџџџџџџџџ\Author:TˆQ0‡<њAњСGфџџџ Lџџџџџџџџ`LocalStorm T|=?IњAњСзџџџLџџџџџџџџ\Version:T`Q=`IњAњСGзџџџLџџџџџџџџT1.0T|JAVњAњСЪџџџLџџџџџџџџ\Created:TРQJДVњAњСGЪџџџLџџџџџџџџt05.07.2005 10:37:51T|WDcњAњСНџџџLџџџџџџџџ\Updated:TРQWДcњAњСGНџџџLџџџџџџџџt06.07.2005 21:51:14 &% Ÿўџџ6’ўџџ  џџџ  џџџ% ( &% ИAўџџ6ЪЛ§џџ  џџџ  џџџ% ( % €( ( % €( % €(