...
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
}
}; |
...