memory leaks
This commit is contained in:
@@ -65,12 +65,12 @@ void BaseChannelRequester::message(const String message, const epics::pvData::Me
|
||||
|
||||
void BaseChannelRequester::message(Transport* transport, const pvAccessID ioid, const String message, const MessageType messageType)
|
||||
{
|
||||
transport->enqueueSendRequest( new BaseChannelRequesterMessageTransportSender(ioid, message, messageType));
|
||||
transport->enqueueSendRequest(new BaseChannelRequesterMessageTransportSender(ioid, message, messageType));
|
||||
}
|
||||
|
||||
void BaseChannelRequester::sendFailureMessage(const int8 command, Transport* transport, const pvAccessID ioid, const int8 qos, const Status status)
|
||||
{
|
||||
transport->enqueueSendRequest( new BaseChannelRequesterFailureMessageTransportSender(command, transport, ioid, qos, status));
|
||||
transport->enqueueSendRequest(new BaseChannelRequesterFailureMessageTransportSender(command, transport, ioid, qos, status));
|
||||
}
|
||||
|
||||
BaseChannelRequesterMessageTransportSender::BaseChannelRequesterMessageTransportSender(const pvAccessID ioid, const String message,const epics::pvData::MessageType messageType):
|
||||
@@ -138,7 +138,7 @@ void BaseChannelRequesterFailureMessageTransportSender::unlock()
|
||||
|
||||
void BaseChannelRequesterFailureMessageTransportSender::release()
|
||||
{
|
||||
|
||||
delete this;
|
||||
}
|
||||
|
||||
void BaseChannelRequesterFailureMessageTransportSender::acquire()
|
||||
|
||||
@@ -44,7 +44,6 @@ private:
|
||||
ServerContextImpl* _context;
|
||||
static const int32 NULL_REQUEST;
|
||||
int32 _pendingRequest;
|
||||
int32 _refCount;
|
||||
};
|
||||
|
||||
class BaseChannelRequesterMessageTransportSender : public TransportSender
|
||||
|
||||
@@ -40,7 +40,7 @@ void ServerBadResponse::handleResponse(osiSockAddr* responseFrom,
|
||||
}
|
||||
|
||||
ServerResponseHandler::ServerResponseHandler(ServerContextImpl* context) {
|
||||
|
||||
// TODO replace with auto_ptr and vector
|
||||
_badResponse = new ServerBadResponse(context);
|
||||
|
||||
_handlerTable = new ResponseHandler*[HANDLER_TABLE_LENGTH];
|
||||
@@ -139,11 +139,12 @@ void ServerEchoHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
AbstractServerResponseHandler::handleResponse(responseFrom,
|
||||
transport, version, command, payloadSize, payloadBuffer);
|
||||
|
||||
EchoTransportSender* echoReply = new EchoTransportSender(
|
||||
responseFrom);
|
||||
EchoTransportSender* echoReply = new EchoTransportSender(responseFrom);
|
||||
|
||||
// send back
|
||||
transport->enqueueSendRequest(echoReply);
|
||||
|
||||
echoReply->release();
|
||||
}
|
||||
|
||||
void ServerIntrospectionSearchHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
@@ -328,6 +329,7 @@ void ServerCreateChannelHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO memory leak...
|
||||
ChannelRequester* cr = new ServerChannelRequesterImpl(transport, channelName, cid);
|
||||
_provider->createChannel(channelName, cr, transport->getPriority());
|
||||
}
|
||||
@@ -495,7 +497,9 @@ void ServerDestroyChannelHandler::handleResponse(osiSockAddr* responseFrom,
|
||||
casTransport->unregisterChannel(sid);
|
||||
|
||||
// send response back
|
||||
transport->enqueueSendRequest(new ServerDestroyChannelHandlerTransportSender(cid, sid));
|
||||
ServerDestroyChannelHandlerTransportSender* sr = new ServerDestroyChannelHandlerTransportSender(cid, sid);
|
||||
transport->enqueueSendRequest(sr);
|
||||
sr->release();
|
||||
}
|
||||
|
||||
/****************************************************************************************/
|
||||
@@ -1697,6 +1701,7 @@ void ServerGetFieldRequesterImpl::getDone(const Status& status, FieldConstPtr fi
|
||||
_field = field;
|
||||
}
|
||||
_transport->enqueueSendRequest(this);
|
||||
release();
|
||||
}
|
||||
|
||||
void ServerGetFieldRequesterImpl::lock()
|
||||
|
||||
@@ -149,6 +149,7 @@ namespace epics {
|
||||
virtual void send(ByteBuffer* buffer, TransportSendControl* control) {
|
||||
control->startMessage(CMD_ECHO, 0);
|
||||
control->setRecipient(_echoFrom);
|
||||
// TODO content
|
||||
}
|
||||
|
||||
virtual void lock() {
|
||||
|
||||
Reference in New Issue
Block a user