serverContext and beacon emitter impl

This commit is contained in:
Gasper Jansa
2011-02-04 16:22:28 +01:00
parent d81fd2309b
commit de8b632381
5 changed files with 61 additions and 68 deletions

View File

@@ -12,7 +12,7 @@ const int32 ServerContextImpl::VERSION_MAJOR = 2;
const int32 ServerContextImpl::VERSION_MINOR = 0;
const int32 ServerContextImpl::VERSION_MAINTENANCE = 0;
const int32 ServerContextImpl::VERSION_DEVELOPMENT = 0;
const Version* ServerContextImpl::VERSION = new Version("Channel Access Server in C++", "C++",
const Version ServerContextImpl::VERSION("Channel Access Server in C++", "C++",
ServerContextImpl::VERSION_MAJOR,
ServerContextImpl::VERSION_MINOR,
ServerContextImpl::VERSION_MAINTENANCE,
@@ -30,6 +30,7 @@ ServerContextImpl::ServerContextImpl():
_receiveBufferSize(MAX_TCP_RECV),
_timer(NULL),
_broadcastTransport(NULL),
_broadcastConnector(NULL),
_beaconEmitter(NULL),
_acceptor(NULL),
_transportRegistry(NULL),
@@ -47,9 +48,15 @@ ServerContextImpl::ServerContextImpl():
ServerContextImpl::~ServerContextImpl()
{
if(_beaconEmitter) delete _beaconEmitter;
if(_broadcastTransport) delete _broadcastTransport;
if(_broadcastConnector) delete _broadcastConnector;
if(_acceptor) delete _acceptor;
if(_transportRegistry) delete _transportRegistry;
if(_timer) delete _timer;
}
const Version* ServerContextImpl::getVersion()
const Version& ServerContextImpl::getVersion()
{
return ServerContextImpl::VERSION;
}
@@ -101,7 +108,7 @@ void ServerContextImpl::loadConfiguration()
void ServerContextImpl::initialize(ChannelAccess* channelAccess)
{
//TODO
//TODO uncomment
/*Lock guard(&_mutex);
if (channelAccess == NULL)
{
@@ -163,14 +170,15 @@ void ServerContextImpl::initializeBroadcastTransport()
epicsSocketDestroy(socket);
BlockingUDPConnector* broadcastConnector = new BlockingUDPConnector(true, true);
_broadcastConnector = new BlockingUDPConnector(true, true);
_broadcastTransport = static_cast<BlockingUDPTransport*>(broadcastConnector->connect(
_broadcastTransport = static_cast<BlockingUDPTransport*>(_broadcastConnector->connect(
NULL, new ServerResponseHandler(this),
listenLocalAddress, CA_MINOR_PROTOCOL_REVISION,
CA_DEFAULT_PRIORITY));
_broadcastTransport->setBroadcastAddresses(broadcasts);
if(broadcasts) delete broadcasts;
// set ignore address list
if (_ignoreAddressList.length() > 0)
@@ -181,6 +189,8 @@ void ServerContextImpl::initializeBroadcastTransport()
{
_broadcastTransport->setIgnoredAddresses(list);
}
if(list) delete list;
}
// set broadcast address list
if (_beaconAddressList.length() > 0)
@@ -197,6 +207,7 @@ void ServerContextImpl::initializeBroadcastTransport()
{
_broadcastTransport->setBroadcastAddresses(list);
}
if(list) delete list;
}
_broadcastTransport->start();
@@ -240,7 +251,6 @@ void ServerContextImpl::run(int32 seconds)
// run...
_beaconEmitter->start();
//TODO review how is with guards
if(seconds == 0)
{
_runEvent.wait();
@@ -367,7 +377,7 @@ void ServerContextImpl::printInfo()
void ServerContextImpl::printInfo(ostream& str)
{
Lock guard(&_mutex);
str << "VERSION : " << getVersion()->getVersionString() << endl \
str << "VERSION : " << getVersion().getVersionString() << endl \
<< "CHANNEL PROVIDER : " << _channelProviderName << endl \
<< "BEACON_ADDR_LIST : " << _beaconAddressList << endl \
<< "AUTO_BEACON_ADDR_LIST : " << _autoBeaconAddressList << endl \