src/java.corba/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelAcceptorImpl.java
Print this page
@@ -262,36 +262,46 @@
getConnectionCache().stampTime(connection);
getConnectionCache().put(this, connection);
if (connection.shouldRegisterServerReadEvent()) {
Selector selector = orb.getTransportManager().getSelector(0);
+ if (selector != null) {
+ if (orb.transportDebugFlag) {
+ dprint(".accept: registerForEvent: " + connection);
+ }
selector.registerForEvent(connection.getEventHandler());
}
+ }
getConnectionCache().reclaim();
} catch (IOException e) {
if (orb.transportDebugFlag) {
dprint(".accept:", e);
}
- orb.getTransportManager().getSelector(0).unregisterForEvent(this);
+ Selector selector = orb.getTransportManager().getSelector(0);
+ if (selector != null) {
+ selector.unregisterForEvent(this);
// REVISIT - need to close - recreate - then register new one.
- orb.getTransportManager().getSelector(0).registerForEvent(this);
+ selector.registerForEvent(this);
// NOTE: if register cycling we do not want to shut down ORB
// since local beans will still work. Instead one will see
// a growing log file to alert admin of problem.
}
}
+ }
public void close ()
{
try {
if (orb.transportDebugFlag) {
dprint(".close->:");
}
Selector selector = orb.getTransportManager().getSelector(0);
+ if (selector != null) {
selector.unregisterForEvent(this);
+ }
if (serverSocketChannel != null) {
serverSocketChannel.close();
}
if (serverSocket != null) {
serverSocket.close();
@@ -478,11 +488,13 @@
// doWork(). Hence, the registering of the enabling of
// the SelectionKey's interestOps is done here instead
// of calling SelectionKey.interestOps(<interest op>).
Selector selector = orb.getTransportManager().getSelector(0);
+ if (selector != null) {
selector.registerInterestOps(this);
+ }
if (orb.transportDebugFlag) {
dprint(".doWork<-:" + this);
}
}