Commit 3db7758a authored by Pavel Vainerman's avatar Pavel Vainerman

Немного подправил функции с передачей shared_ptr

(ModbusMaster): частично перевёл на использование shared_ptr
parent d023710b
......@@ -188,6 +188,7 @@ MBExchange::~MBExchange()
delete it1->second;
}
mb.reset();
delete shm;
}
// -----------------------------------------------------------------------------
......
......@@ -85,7 +85,7 @@ MBTCPMaster::~MBTCPMaster()
pollThread->join();
}
delete pollThread;
//delete mbtcp;
mbtcp.reset();
}
// -----------------------------------------------------------------------------
std::shared_ptr<ModbusClient> MBTCPMaster::initMB( bool reopen )
......@@ -95,8 +95,8 @@ std::shared_ptr<ModbusClient> MBTCPMaster::initMB( bool reopen )
if( !reopen )
return mbtcp;
mbtcp = nullptr;
mb = nullptr;
mbtcp.reset();
mb.reset();
}
try
......@@ -115,7 +115,7 @@ std::shared_ptr<ModbusClient> MBTCPMaster::initMB( bool reopen )
mbtcp->setAfterSendPause(aftersend_pause);
dinfo << myname << "(init): ipaddr=" << iaddr << " port=" << port << endl;
dinfo << myname << "(init): ipaddr=" << iaddr << " port=" << port << endl;
if( dlog.is_level9() )
mbtcp->setLog(dlog);
......
......@@ -62,13 +62,7 @@ int main(int argc, char* argv[] )
try
{
auto conf = uniset_init(argc,argv);
/*
conf->initDebug(dlog,"dlog");
string logfilename = conf->getArgParam("--logfile", "smemory.log");
string logname( conf->getLogDir() + logfilename );
ulog.logFile( logname );
dlog.logFile( logname );
*/
shm = SharedMemory::init_smemory(argc, argv);
if( !shm )
return 1;
......
......@@ -269,7 +269,7 @@ class UInterface
struct Info
{
Info( UniSetTypes::ObjectVar ptr ):ptr(ptr),ncall(0){}
Info( const UniSetTypes::ObjectVar& ptr ):ptr(ptr),ncall(0){}
Info():ptr(NULL),ncall(0){}
UniSetTypes::ObjectVar ptr;
......
......@@ -74,11 +74,11 @@ class UniSetManager:
// --------------------------
void initPOA(UniSetManager* rmngr);
virtual bool addObject( std::shared_ptr<UniSetObject> obj );
virtual bool removeObject( std::shared_ptr<UniSetObject> obj );
virtual bool addObject( const std::shared_ptr<UniSetObject>& obj );
virtual bool removeObject( const std::shared_ptr<UniSetObject>& obj );
virtual bool addManager( std::shared_ptr<UniSetManager> mngr );
virtual bool removeManager( std::shared_ptr<UniSetManager> mngr );
virtual bool addManager( const std::shared_ptr<UniSetManager>& mngr );
virtual bool removeManager( const std::shared_ptr<UniSetManager>& mngr );
/*! Получение доступа к подчиненному менеджеру по идентификатору
* \return объект ненайден будет возвращен 0.
......
......@@ -10,8 +10,8 @@
namespace ModbusTCPCore
{
int readNextData( ost::TCPStream* tcp, std::queue<unsigned char>& qrecv, int max=100 );
int getNextData( unsigned char* buf, int len, std::queue<unsigned char>& qrecv, ost::TCPStream* tcp );
ModbusRTU::mbErrCode sendData( unsigned char* buf, int len, ost::TCPStream* tcp );
int getNextData( ost::TCPStream* tcp, std::queue<unsigned char>& qrecv, unsigned char* buf, int len );
ModbusRTU::mbErrCode sendData( ost::TCPStream* tcp, unsigned char* buf, int len );
}
// -------------------------------------------------------------------------
#endif // ModbusTCPCore_H_
......
#ifndef ModbusTCPMaster_H_
#define ModbusTCPMaster_H_
// -------------------------------------------------------------------------
#include <memory>
#include <string>
#include <queue>
#include <cc++/socket.h>
......@@ -44,7 +45,7 @@ class ModbusTCPMaster:
private:
//ost::TCPStream* tcp;
UTCPStream* tcp;
std::shared_ptr<UTCPStream> tcp;
ModbusRTU::ModbusData nTransaction;
std::queue<unsigned char> qrecv;
PassiveTimer ptTimeout;
......
......@@ -22,10 +22,10 @@ int ModbusTCPCore::readNextData( ost::TCPStream* tcp,
return i;
}
// -------------------------------------------------------------------------
int ModbusTCPCore::getNextData( unsigned char* buf, int len,
// ------------------------------------------------------------------------
int ModbusTCPCore::getNextData( ost::TCPStream* tcp,
std::queue<unsigned char>& qrecv,
ost::TCPStream* tcp )
unsigned char* buf, int len )
{
if( !tcp || !tcp->isConnected() )
return 0;
......@@ -51,7 +51,7 @@ int ModbusTCPCore::getNextData( unsigned char* buf, int len,
return i;
}
// -------------------------------------------------------------------------
mbErrCode ModbusTCPCore::sendData( unsigned char* buf, int len, ost::TCPStream* tcp )
mbErrCode ModbusTCPCore::sendData( ost::TCPStream* tcp, unsigned char* buf, int len )
{
if( !tcp || !tcp->isConnected() )
return erTimeOut;
......
......@@ -11,7 +11,7 @@ using namespace ModbusRTU;
using namespace UniSetTypes;
// -------------------------------------------------------------------------
ModbusTCPMaster::ModbusTCPMaster():
tcp(0),
tcp(nullptr),
nTransaction(0),
iaddr(""),
force_disconnect(true)
......@@ -29,11 +29,13 @@ ModbusTCPMaster::~ModbusTCPMaster()
{
if( isConnection() )
disconnect();
tcp.reset();
}
// -------------------------------------------------------------------------
int ModbusTCPMaster::getNextData( unsigned char* buf, int len )
{
return ModbusTCPCore::getNextData(buf,len,qrecv,tcp);
return ModbusTCPCore::getNextData(tcp.get(),qrecv,buf,len);
}
// -------------------------------------------------------------------------
void ModbusTCPMaster::setChannelTimeout( timeout_t msec )
......@@ -44,7 +46,7 @@ void ModbusTCPMaster::setChannelTimeout( timeout_t msec )
// -------------------------------------------------------------------------
mbErrCode ModbusTCPMaster::sendData( unsigned char* buf, int len )
{
return ModbusTCPCore::sendData(buf,len,tcp);
return ModbusTCPCore::sendData(tcp.get(),buf,len);
}
// -------------------------------------------------------------------------
mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
......@@ -300,15 +302,13 @@ void ModbusTCPMaster::reconnect()
if( tcp )
{
tcp->disconnect();
delete tcp;
tcp = 0;
tcp.reset();
}
try
{
tcp = new UTCPStream();
tcp->create(iaddr,port,true,500);
tcp = make_shared<UTCPStream>();
tcp->create(iaddr,port,true,500);
tcp->setTimeout(replyTimeOut_ms);
}
catch( std::exception& e )
......@@ -342,8 +342,7 @@ void ModbusTCPMaster::connect( ost::InetAddress addr, int _port )
if( tcp )
{
disconnect();
delete tcp;
tcp = 0;
tcp.reset();
}
// if( !tcp )
......@@ -360,7 +359,7 @@ void ModbusTCPMaster::connect( ost::InetAddress addr, int _port )
ost::Thread::setException(ost::Thread::throwException);
try
{
tcp = new UTCPStream();
tcp = make_shared<UTCPStream>();
tcp->create(iaddr,port,true,500);
tcp->setTimeout(replyTimeOut_ms);
}
......@@ -394,8 +393,7 @@ void ModbusTCPMaster::disconnect()
return;
tcp->disconnect();
delete tcp;
tcp = 0;
tcp.reset();
}
// -------------------------------------------------------------------------
bool ModbusTCPMaster::isConnection()
......
......@@ -265,12 +265,12 @@ void ModbusTCPServer::setChannelTimeout( timeout_t msec )
// --------------------------------------------------------------------------------
mbErrCode ModbusTCPServer::sendData( unsigned char* buf, int len )
{
return ModbusTCPCore::sendData(buf,len,&tcp);
return ModbusTCPCore::sendData(&tcp,buf,len);
}
// -------------------------------------------------------------------------
int ModbusTCPServer::getNextData( unsigned char* buf, int len )
{
return ModbusTCPCore::getNextData(buf,len,qrecv,&tcp);
return ModbusTCPCore::getNextData(&tcp,qrecv,buf,len);
}
// --------------------------------------------------------------------------------
......
......@@ -174,12 +174,12 @@ void ModbusTCPSession::final()
// -------------------------------------------------------------------------
mbErrCode ModbusTCPSession::sendData( unsigned char* buf, int len )
{
return ModbusTCPCore::sendData(buf,len,this);
return ModbusTCPCore::sendData(this,buf,len);
}
// -------------------------------------------------------------------------
int ModbusTCPSession::getNextData( unsigned char* buf, int len )
{
return ModbusTCPCore::getNextData(buf,len,qrecv,this);
return ModbusTCPCore::getNextData(this,qrecv,buf,len);
}
// --------------------------------------------------------------------------------
......
......@@ -175,7 +175,7 @@ void UniSetManager::initPOA( UniSetManager* rmngr )
managers(initial);
}
// ------------------------------------------------------------------------------------------
bool UniSetManager::addObject( std::shared_ptr<UniSetObject> obj )
bool UniSetManager::addObject( const std::shared_ptr<UniSetObject>& obj )
{
{ //lock
uniset_rwmutex_wrlock lock(olistMutex);
......@@ -190,7 +190,7 @@ bool UniSetManager::addObject( std::shared_ptr<UniSetObject> obj )
}
// ------------------------------------------------------------------------------------------
bool UniSetManager::removeObject( std::shared_ptr<UniSetObject> obj )
bool UniSetManager::removeObject( const std::shared_ptr<UniSetObject>& obj )
{
{ //lock
uniset_rwmutex_wrlock lock(olistMutex);
......@@ -420,7 +420,7 @@ void UniSetManager::broadcast(const TransportMessage& msg)
}
// ------------------------------------------------------------------------------------------
bool UniSetManager::addManager( std::shared_ptr<UniSetManager> child )
bool UniSetManager::addManager( const std::shared_ptr<UniSetManager>& child )
{
{ //lock
uniset_rwmutex_wrlock lock(mlistMutex);
......@@ -440,7 +440,7 @@ bool UniSetManager::addManager( std::shared_ptr<UniSetManager> child )
}
// ------------------------------------------------------------------------------------------
bool UniSetManager::removeManager( std::shared_ptr<UniSetManager> child )
bool UniSetManager::removeManager( const std::shared_ptr<UniSetManager>& child )
{
{ //lock
uniset_rwmutex_wrlock lock(mlistMutex);
......@@ -464,7 +464,7 @@ const std::shared_ptr<UniSetManager> UniSetManager::itemM( const ObjectId id )
}
} // unlock
return 0;
return nullptr; // std::shared_ptr<UniSetManager>();
}
// ------------------------------------------------------------------------------------------
......@@ -480,7 +480,7 @@ const std::shared_ptr<UniSetObject> UniSetManager::itemO( const ObjectId id )
}
} // unlock
return std::shared_ptr<UniSetObject>();
return nullptr; // std::shared_ptr<UniSetObject>();
}
// ------------------------------------------------------------------------------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment