This commit is contained in:
Michael Davidsaver
2015-09-09 18:54:19 -04:00
parent c761c94bfc
commit 7a415a958d
2 changed files with 30 additions and 1 deletions

View File

@ -30,7 +30,7 @@ When a channel create request is received, the channel cache is checked.
If no connected entry exists, then the request is failed.
Structure associations
Structure associations and ownership
```c
@ -74,6 +74,33 @@ struct pva::ServerChannelImpl : public pva::ServerChannel
};
```
Threading and Locking
ServerContextImpl
BeaconServerStatusProvider ?
2x BlockingUDPTransport (bcast and mcast, one thread each)
calls ChannelProvider::channelFind with no locks held
BlockingTCPAcceptor
BlockingServerTCPTransportCodec -> BlockingAbstractCodec (send and recv threads)
ServerResponseHandler
calls ChannelProvider::channelFind
calls ChannelProvider::createChannel
calls Channel::create*
InternalClientContextImpl
2x BlockingUDPTransport (bcast listener and ucast tx/rx, one thread each)
BlockingTCPConnector
BlockingClientTCPTransportCodec -> BlockingSocketAbstractCodec (send and recv threads)
ClientResponseHandler
calls MonitorRequester::monitorEvent with MonitorStrategyQueue::m_mutex locked
TODO
ServerChannelRequesterImpl::channelStateChange() - placeholder, needs implementation
the send queue in BlockingAbstractCodec has no upper bound

View File

@ -37,6 +37,8 @@ struct GWServerChannelProvider : public
return "GWServer";
}
// Called from UDP search thread with no locks held
// Called from TCP threads (for search w/ TCP)
virtual pva::ChannelFind::shared_pointer channelFind(std::string const & channelName,
pva::ChannelFindRequester::shared_pointer const & channelFindRequester)
{