SGPropertyNode *n = globals->get_props()->getNode( param[1].c_str() );
if (n)
n->removeChangeListener( this );
- } catch (sg_exception &e) {
+ } catch (sg_exception&) {
error("Error:Listener could not be removed");
}
}
} else {
throw FGProtocolConfigError( "FGProps: incorrect number of configuration arguments" );
}
- printf( "Property server started on port %d\n", port );
}
/**
return false;
}
- simgear::NetChannel::open();
- simgear::NetChannel::bind( "", port );
- simgear::NetChannel::listen( 5 );
+ if (!simgear::NetChannel::open())
+ {
+ SG_LOG( SG_IO, SG_ALERT, "FGProps: Failed to open network socket.");
+ return false;
+ }
+
+ int err = simgear::NetChannel::bind( "", port );
+ if (err)
+ {
+ SG_LOG( SG_IO, SG_ALERT, "FGProps: Failed to open port #" << port << " - the port is already used (error " << err << ").");
+ return false;
+ }
+
+ err = simgear::NetChannel::listen( 5 );
+ if (err)
+ {
+ SG_LOG( SG_IO, SG_ALERT, "FGProps: Failed to listen on port #" << port << "(error " << err << ").");
+ return false;
+ }
+
+ poller.addChannel(this);
+
SG_LOG( SG_IO, SG_INFO, "Props server started on port " << port );
set_enabled( true );
bool
FGProps::process()
{
- simgear::NetChannel::poll();
+ poller.poll();
return true;
}
<< addr.getHost() << ":" << addr.getPort() );
PropsChannel* channel = new PropsChannel();
channel->setHandle( handle );
+ poller.addChannel( channel );
}