...
createEventsListener
– volá sa pri nadväzovaní TCP spojenia, ešte pred tým, ako sa pripájajúci identifikuje ako D2Connector. Klientská aplikácia má v tomto bode možnosť odmietnuť prichádzajúce spojenie (na základe adresy) alebo vytvoriť „listener-a" pre zachytávanie udalostí JConnector-a.onConnectionEstabilished
– volá sa po úspešnom nadviazaní spojenia medzi JConnectorom a D2Connector-om, parametrom je JConnector pripravený na použitie.onConnectionFailed
– volá sa, ak sa spojenie nepodarilo nadviazať – pravdepodobne kvôli tomu, že sa o spojenie pokúsil neznámy proces, alebo D2Connector inej verzie.
Varovanie |
---|
Pozor: Na počúvanie prichádzajúcich spojení bude vytvorené samostatné vlákno a všetky 3 metódy budú volané v tomto počúvajúcom vlákne. Je preto dôležité pamätať na potrebu synchronizácie prístupu k zdieľaným zdrojom. Taktiež by vykonanie metód malo prebehnúť podľa možností čo najrýchlejšie, aby neblokovalo spracovanie ďalších prichádzajúcich spojení. |
...
Blok kódu | ||||
---|---|---|---|---|
| ||||
ServerSocketEventsListener listener = new ServerSocketEventsListener() { @Override public D2ConnectorEventsListener createEventsListener(InetAddress address, int port, ListeningHandle handle) throws ConnectionRejectedException { if (acceptConnection(address, port)) { if (needConnectorListener(address, port)) return new D2ConnectorEventsListener() { /* implementation */ }; int port, else return null; // simplest -> accept connection without any listener ListeningHandle handle)} throwselse ConnectionRejectedException { throw ifnew (acceptConnection(address, port)) ConnectionRejectedException(); // reject connection {} @Override public void onConnectionEstabilished(D2Connector connector, if (needConnectorListener(addressInetAddress inetAddress, int port, ListeningHandle handle)) { // use connector to returncreate new D2ConnectorEventsListener() { /* implementation */ };sessions } @Override public void onConnectionFailed(ConnectorException ex, else InetAddress inetAddress, return null; // simplest -> accept connection without any listener } else throw new ConnectionRejectedException(); // reject connection } @Override public void onConnectionEstabilished(D2Connector connector, InetAddress inetAddress, int port, ListeningHandle handle) { // use connector to create sessions } @Override public void onConnectionFailed(ConnectorException ex, InetAddress inetAddress, int port, int port, ListeningHandle handle) { // handle false attempt - log it and dispose of created listener } }; |
...