pva server: keep ChannelRequester alive
This commit is contained in:
@@ -27,7 +27,10 @@ public:
|
||||
* @param sid channel SID.
|
||||
* @param css channel security session.
|
||||
*/
|
||||
ServerChannelImpl(Channel::shared_pointer const & channel, pvAccessID cid, pvAccessID sid, ChannelSecuritySession::shared_pointer const & css);
|
||||
ServerChannelImpl(Channel::shared_pointer const & channel,
|
||||
const ChannelRequester::shared_pointer& requester,
|
||||
pvAccessID cid, pvAccessID sid,
|
||||
ChannelSecuritySession::shared_pointer const & css);
|
||||
/*
|
||||
* Destructor.
|
||||
*/
|
||||
@@ -99,6 +102,8 @@ private:
|
||||
*/
|
||||
Channel::shared_pointer _channel;
|
||||
|
||||
ChannelRequester::shared_pointer _requester;
|
||||
|
||||
/**
|
||||
* Channel CID.
|
||||
*/
|
||||
|
||||
@@ -801,7 +801,7 @@ void ServerChannelRequesterImpl::channelCreated(const Status& status, Channel::s
|
||||
pvAccessID sid = casTransport->preallocateChannelSID();
|
||||
try
|
||||
{
|
||||
serverChannel.reset(new ServerChannelImpl(channel, _cid, sid, _css));
|
||||
serverChannel.reset(new ServerChannelImpl(channel, shared_from_this(), _cid, sid, _css));
|
||||
|
||||
// ack allocation and register
|
||||
casTransport->registerChannel(sid, serverChannel);
|
||||
|
||||
@@ -13,9 +13,11 @@ namespace epics {
|
||||
namespace pvAccess {
|
||||
|
||||
ServerChannelImpl::ServerChannelImpl(Channel::shared_pointer const & channel,
|
||||
const ChannelRequester::shared_pointer &requester,
|
||||
pvAccessID cid, pvAccessID sid,
|
||||
ChannelSecuritySession::shared_pointer const & css):
|
||||
_channel(channel),
|
||||
_requester(requester),
|
||||
_cid(cid),
|
||||
_sid(sid),
|
||||
_destroyed(false),
|
||||
|
||||
Reference in New Issue
Block a user