Commit b2cfa69c authored by Pavel Vainerman's avatar Pavel Vainerman

make style

parent 0b420448
......@@ -224,6 +224,7 @@ void MBTCPMaster::sigterm( int signo )
bool MBTCPMaster::deactivateObject()
{
setProcActive(false);
if( pollThread )
{
pollThread->stop();
......
......@@ -514,6 +514,7 @@ void MBTCPMultiMaster::sigterm( int signo )
bool MBTCPMultiMaster::deactivateObject()
{
setProcActive(false);
if( pollThread )
{
pollThread->stop();
......
......@@ -44,7 +44,7 @@ UNetReceiver::UNetReceiver(const std::string& s_host, int _port, const std::shar
recvpause(10),
updatepause(100),
port(_port),
saddr(s_host,_port),
saddr(s_host, _port),
recvTimeout(5000),
prepareTime(2000),
lostTimeout(200), /* 2*updatepause */
......
......@@ -35,7 +35,7 @@ UNetSender::UNetSender(const std::string& _host, const int _port, const std::sha
shm(smi),
port(_port),
s_host(_host),
saddr(_host,_port),
saddr(_host, _port),
sendpause(150),
packsendpause(5),
activated(false),
......@@ -115,8 +115,8 @@ bool UNetSender::createConnection( bool throwEx )
//udp = make_shared<UDPSocketU>(addr, port);
udp = make_shared<UDPSocketU>();
udp->setBroadcast(true);
udp->setSendTimeout(writeTimeout*1000);
// udp->setNoDelay(true);
udp->setSendTimeout(writeTimeout * 1000);
// udp->setNoDelay(true);
}
catch( const std::exception& e )
{
......@@ -305,13 +305,15 @@ void UNetSender::real_send( UniSetUDP::UDPMessage& mypack )
if( packetnum == 0 )
packetnum = 1;
if( !udp || !udp->poll(writeTimeout*1000, Poco::Net::Socket::SELECT_WRITE) )
if( !udp || !udp->poll(writeTimeout * 1000, Poco::Net::Socket::SELECT_WRITE) )
return;
mypack.transport_msg(s_msg);
try
{
size_t ret = udp->sendTo((char*)s_msg.data, s_msg.len, saddr);
if( ret < s_msg.len )
unetcrit << myname << "(real_send): FAILED ret=" << ret << " < sizeof=" << s_msg.len << endl;
}
......
......@@ -23,7 +23,7 @@ static int s_port = 3003; // Node2
static int s_nodeID = 3003;
static int s_procID = 123;
static int s_numpack = 1;
static Poco::Net::SocketAddress s_addr(host,s_port);
static Poco::Net::SocketAddress s_addr(host, s_port);
static ObjectId node2_respond_s = 12;
static ObjectId node2_lostpackets_as = 13;
static int maxDifferense = 5; // см. unetudp-test-configure.xml --unet-maxdifferense
......@@ -63,7 +63,7 @@ static UniSetUDP::UDPMessage receive( unsigned int pnum = 0, timeout_t tout = 20
while( ncycle > 0 )
{
if( !udp_r->poll(tout*1000,Poco::Net::Socket::SELECT_READ) )
if( !udp_r->poll(tout * 1000, Poco::Net::Socket::SELECT_READ) )
break;
size_t ret = udp_r->receiveBytes(&(buf.data), sizeof(buf.data) );
......@@ -81,7 +81,7 @@ static UniSetUDP::UDPMessage receive( unsigned int pnum = 0, timeout_t tout = 20
// -----------------------------------------------------------------------------
void send( UniSetUDP::UDPMessage& pack, int tout = 2000 )
{
CHECK( udp_s->poll(tout*1000,Poco::Net::Socket::SELECT_WRITE) );
CHECK( udp_s->poll(tout * 1000, Poco::Net::Socket::SELECT_WRITE) );
pack.nodeID = s_nodeID;
pack.procID = s_procID;
......@@ -89,7 +89,7 @@ void send( UniSetUDP::UDPMessage& pack, int tout = 2000 )
UniSetUDP::UDPPacket s_buf;
pack.transport_msg(s_buf);
size_t ret = udp_s->sendTo((char*)&s_buf.data, s_buf.len,s_addr);
size_t ret = udp_s->sendTo((char*)&s_buf.data, s_buf.len, s_addr);
REQUIRE( ret == s_buf.len );
}
// -----------------------------------------------------------------------------
......
......@@ -107,7 +107,7 @@ static void run_senders( size_t max, const std::string& s_host, size_t count = 5
{
try
{
if( udp->poll(100000,Poco::Net::Socket::SELECT_WRITE) )
if( udp->poll(100000, Poco::Net::Socket::SELECT_WRITE) )
{
mypack.transport_msg(s_buf);
size_t ret = udp->sendBytes((char*)&s_buf.data, s_buf.len);
......
......@@ -228,7 +228,7 @@ int main(int argc, char* argv[])
npack = 0;
}
if( !udp.poll(tout*1000,Poco::Net::Socket::SELECT_READ) )
if( !udp.poll(tout * 1000, Poco::Net::Socket::SELECT_READ) )
{
cout << "(recv): Timeout.." << endl;
continue;
......@@ -304,7 +304,7 @@ int main(int argc, char* argv[])
for( unsigned int i = 0; i < count; i++ )
mypack.addDData(i, i);
Poco::Net::SocketAddress sa(s_host,port);
Poco::Net::SocketAddress sa(s_host, port);
udp->connect(sa);
size_t packetnum = 0;
......@@ -326,7 +326,7 @@ int main(int argc, char* argv[])
try
{
if( udp->poll(tout*1000,Poco::Net::Socket::SELECT_WRITE) )
if( udp->poll(tout * 1000, Poco::Net::Socket::SELECT_WRITE) )
{
mypack.transport_msg(s_buf);
......
......@@ -3,10 +3,10 @@
/*
DO NOT EDIT THIS FILE. IT IS AUTOGENERATED FILE.
ALL YOUR CHANGES WILL BE LOST.
НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ. ЭТОТ ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ.
ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ.
*/
*/
// --------------------------------------------------------------------------
// generate timestamp: 2016-08-24+03:00
// -----------------------------------------------------------------------------
......@@ -29,11 +29,11 @@ class UObject_SK:
public UniSetObject
{
public:
UObject_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::uniset_conf()->getNode("UObject"), const std::string& argprefix="" );
UObject_SK( UniSetTypes::ObjectId id, xmlNode* node = UniSetTypes::uniset_conf()->getNode("UObject"), const std::string& argprefix = "" );
UObject_SK();
virtual ~UObject_SK();
long getValue( UniSetTypes::ObjectId sid );
void setValue( UniSetTypes::ObjectId sid, long value );
void askSensor( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::uniset_conf()->getLocalNode() );
......@@ -43,119 +43,131 @@ class UObject_SK:
virtual bool setMsg( UniSetTypes::ObjectId code, bool state = true );
inline std::shared_ptr<DebugStream> log(){ return mylog; }
inline std::shared_ptr<LogAgregator> logAgregator(){ return loga; }
inline std::shared_ptr<DebugStream> log()
{
return mylog;
}
inline std::shared_ptr<LogAgregator> logAgregator()
{
return loga;
}
void init_dlog( std::shared_ptr<DebugStream> d );
// "синтаксический сахар"..для логов
#ifndef myinfo
#define myinfo if( log()->debugging(Debug::INFO) ) log()->info()
#endif
#ifndef mywarn
#define mywarn if( log()->debugging(Debug::WARN) ) log()->warn()
#endif
#ifndef mycrit
#define mycrit if( log()->debugging(Debug::CRIT) ) log()->crit()
#endif
#ifndef mylog1
#define mylog1 if( log()->debugging(Debug::LEVEL1) ) log()->level1()
#endif
#ifndef mylog2
#define mylog2 if( log()->debugging(Debug::LEVEL2) ) log()->level2()
#endif
#ifndef mylog3
#define mylog3 if( log()->debugging(Debug::LEVEL3) ) log()->level3()
#endif
#ifndef mylog4
#define mylog4 if( log()->debugging(Debug::LEVEL4) ) log()->level4()
#endif
#ifndef mylog5
#define mylog5 if( log()->debugging(Debug::LEVEL5) ) log()->level5()
#endif
#ifndef mylog6
#define mylog6 if( log()->debugging(Debug::LEVEL6) ) log()->level6()
#endif
#ifndef mylog7
#define mylog7 if( log()->debugging(Debug::LEVEL7) ) log()->level7()
#endif
#ifndef mylog8
#define mylog8 if( log()->debugging(Debug::LEVEL8) ) log()->level8()
#endif
#ifndef mylog9
#define mylog9 if( log()->debugging(Debug::LEVEL9) ) log()->level9()
#endif
#ifndef mylogany
#define mylogany log()->any()
#endif
#ifndef vmonit
#define vmonit( var ) vmon.add( #var, var )
#endif
// Вспомогательные функции для удобства логирования
// ------------------------------------------------------------
/*! вывод в строку значение всех входов и выходов в формате
ObjectName:
in_xxx = val
in_xxx2 = val
out_zzz = val
...
*/
std::string dumpIO();
/*! Вывод в строку названия входа/выхода в формате: in_xxx(SensorName)
\param id - идентификатор датчика
\param showLinkName - TRUE - выводить SensorName, FALSE - не выводить
*/
std::string str( UniSetTypes::ObjectId id, bool showLinkName=true ) const;
/*! Вывод значения входа/выхода в формате: in_xxx(SensorName)=val
\param id - идентификатор датчика
\param showLinkName - TRUE - выводить SensorName, FALSE - не выводить
*/
std::string strval( UniSetTypes::ObjectId id, bool showLinkName=true ) const;
/*! Вывод состояния внутренних переменных */
inline std::string dumpVars(){ return std::move(vmon.pretty_str()); }
// ------------------------------------------------------------
std::string help();
// "синтаксический сахар"..для логов
#ifndef myinfo
#define myinfo if( log()->debugging(Debug::INFO) ) log()->info()
#endif
#ifndef mywarn
#define mywarn if( log()->debugging(Debug::WARN) ) log()->warn()
#endif
#ifndef mycrit
#define mycrit if( log()->debugging(Debug::CRIT) ) log()->crit()
#endif
#ifndef mylog1
#define mylog1 if( log()->debugging(Debug::LEVEL1) ) log()->level1()
#endif
#ifndef mylog2
#define mylog2 if( log()->debugging(Debug::LEVEL2) ) log()->level2()
#endif
#ifndef mylog3
#define mylog3 if( log()->debugging(Debug::LEVEL3) ) log()->level3()
#endif
#ifndef mylog4
#define mylog4 if( log()->debugging(Debug::LEVEL4) ) log()->level4()
#endif
#ifndef mylog5
#define mylog5 if( log()->debugging(Debug::LEVEL5) ) log()->level5()
#endif
#ifndef mylog6
#define mylog6 if( log()->debugging(Debug::LEVEL6) ) log()->level6()
#endif
#ifndef mylog7
#define mylog7 if( log()->debugging(Debug::LEVEL7) ) log()->level7()
#endif
#ifndef mylog8
#define mylog8 if( log()->debugging(Debug::LEVEL8) ) log()->level8()
#endif
#ifndef mylog9
#define mylog9 if( log()->debugging(Debug::LEVEL9) ) log()->level9()
#endif
#ifndef mylogany
#define mylogany log()->any()
#endif
#ifndef vmonit
#define vmonit( var ) vmon.add( #var, var )
#endif
// Вспомогательные функции для удобства логирования
// ------------------------------------------------------------
/*! вывод в строку значение всех входов и выходов в формате
ObjectName:
in_xxx = val
in_xxx2 = val
out_zzz = val
...
*/
std::string dumpIO();
/*! Вывод в строку названия входа/выхода в формате: in_xxx(SensorName)
\param id - идентификатор датчика
\param showLinkName - TRUE - выводить SensorName, FALSE - не выводить
*/
std::string str( UniSetTypes::ObjectId id, bool showLinkName = true ) const;
/*! Вывод значения входа/выхода в формате: in_xxx(SensorName)=val
\param id - идентификатор датчика
\param showLinkName - TRUE - выводить SensorName, FALSE - не выводить
*/
std::string strval( UniSetTypes::ObjectId id, bool showLinkName = true ) const;
/*! Вывод состояния внутренних переменных */
inline std::string dumpVars()
{
return std::move(vmon.pretty_str());
}
// ------------------------------------------------------------
std::string help();
// Используемые идентификаторы
// Используемые идентификаторы сообщений
// Текущее значение
// --- public variables ---
// --- end of public variables ---
protected:
// --- protected variables ---
// ---- end of protected variables ----
virtual void callback() override;
virtual void processingMessage( const UniSetTypes::VoidMessage* msg ) override;
virtual void sysCommand( const UniSetTypes::SystemMessage* sm ){};
virtual void askSensors( UniversalIO::UIOCommand cmd ){}
virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) override{}
virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) override{}
virtual void sysCommand( const UniSetTypes::SystemMessage* sm ) {};
virtual void askSensors( UniversalIO::UIOCommand cmd ) {}
virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) override {}
virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) override {}
virtual void sigterm( int signo ) override;
virtual bool activateObject() override;
virtual std::string getMonitInfo(){ return ""; } /*!< пользовательская информация выводимая в getInfo() */
virtual std::string getMonitInfo()
{
return ""; /*!< пользовательская информация выводимая в getInfo() */
}
// Выполнение очередного шага программы
virtual void step(){}
virtual void step() {}
virtual void testMode( bool state );
void updateOutputs( bool force );
......@@ -177,22 +189,28 @@ class UObject_SK:
PassiveTimer ptHeartBeat; /*! < период "сердцебиения" */
UniSetTypes::ObjectId idHeartBeat; /*! < идентификатор датчика (AI) "сердцебиения" */
long maxHeartBeat; /*! < сохраняемое значение */
xmlNode* confnode;
/*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string& name) { return UniSetTypes::uniset_conf()->getIntProp(confnode, name); }
int getIntProp(const std::string& name)
{
return UniSetTypes::uniset_conf()->getIntProp(confnode, name);
}
/*! получить текстовое свойство из конф. файла по привязанной confnode */
inline const std::string getProp(const std::string& name) { return UniSetTypes::uniset_conf()->getProp(confnode, name); }
inline const std::string getProp(const std::string& name)
{
return UniSetTypes::uniset_conf()->getProp(confnode, name);
}
timeout_t smReadyTimeout; /*!< время ожидания готовности SM */
std::atomic_bool activated;
timeout_t activateTimeout; /*!< время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!< время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!< пауза между неудачными попытками заказать датчики */
IOController_i::SensorInfo si;
bool forceOut; /*!< флаг принудительного обноления "выходов" */
std::shared_ptr<LogAgregator> loga;
std::shared_ptr<DebugStream> mylog;
std::shared_ptr<LogServer> logserv;
......@@ -201,21 +219,21 @@ class UObject_SK:
VMonitor vmon;
private:
// --- private variables ---
// --- end of private variables ---
// предыдущее значение (для работы UpdateValue())
// Текущее значение (rw-переменные)
// Используемые идентификаторы сообщений
// ------------ private функции ---------------
void updatePreviousValues();
void preAskSensors( UniversalIO::UIOCommand cmd );
......@@ -225,7 +243,7 @@ class UObject_SK:
void initFromSM();
void checkSensors();
// --------------------------------------------
bool end_private; // вспомогательное поле (для внутреннего использования при генерировании кода)
};
......
......@@ -6,10 +6,10 @@
/*
DO NOT EDIT THIS FILE. IT IS AUTOGENERATED FILE.
ALL YOUR CHANGES WILL BE LOST.
НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ. ЭТОТ ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ.
ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ.
*/
*/
// --------------------------------------------------------------------------
// generate timestamp: 2016-08-24+03:00
// -----------------------------------------------------------------------------
......@@ -32,26 +32,26 @@ using namespace UniSetTypes;
// -----------------------------------------------------------------------------
UObject_SK::UObject_SK():
// Инициализация идентификаторов (имена берутся из конф. файла)
// Инициализация идентификаторов (имена берутся из конф. файла)
// Используемые идентификаторы сообщений (имена берутся из конф. файла)
// Используемые идентификаторы сообщений (имена берутся из конф. файла)
// variables
// variables
active(false),
active(false),
idHeartBeat(DefaultObjectId),
maxHeartBeat(10),
confnode(0),
smReadyTimeout(0),
activated(false),
askPause(2000),
forceOut(false),
idHeartBeat(DefaultObjectId),
maxHeartBeat(10),
confnode(0),
smReadyTimeout(0),
activated(false),
askPause(2000),
forceOut(false),
end_private(false)
end_private(false)
{
mycrit << "UObject: init failed!!!!!!!!!!!!!!!" << endl;
throw Exception( string(myname+": init failed!!!") );
throw Exception( string(myname + ": init failed!!!") );
}
// -----------------------------------------------------------------------------
// ( val, confval, default val )
......@@ -59,41 +59,42 @@ static const std::string init3_str( const std::string& s1, const std::string& s2
{
if( !s1.empty() )
return s1;
if( !s2.empty() )
return s2;
return s3;
}
// -----------------------------------------------------------------------------
UObject_SK::UObject_SK( ObjectId id, xmlNode* cnode, const std::string& _argprefix ):
UniSetObject(id),
// Инициализация идентификаторов (имена берутся из конф. файла)
UniSetObject(id),
// Инициализация идентификаторов (имена берутся из конф. файла)
// Используемые идентификаторы сообщений (имена берутся из конф. файла)
// Используемые идентификаторы сообщений (имена берутся из конф. файла)
// variables
// variables
sleep_msec(150),
active(true),
argprefix( (_argprefix.empty() ? myname+"-" : _argprefix) ),
sleep_msec(150),
active(true),
argprefix( (_argprefix.empty() ? myname + "-" : _argprefix) ),
idHeartBeat(DefaultObjectId),
maxHeartBeat(10),
confnode(cnode),
smReadyTimeout(0),
activated(false),
askPause(uniset_conf()->getPIntProp(cnode,"askPause",2000)),
forceOut(false),
idHeartBeat(DefaultObjectId),
maxHeartBeat(10),
confnode(cnode),
smReadyTimeout(0),
activated(false),
askPause(uniset_conf()->getPIntProp(cnode, "askPause", 2000)),
forceOut(false),
end_private(false)
end_private(false)
{
auto conf = uniset_conf();
if( UniSetTypes::findArgParam("--print-id-list",uniset_conf()->getArgc(),uniset_conf()->getArgv()) != -1 )
if( UniSetTypes::findArgParam("--print-id-list", uniset_conf()->getArgc(), uniset_conf()->getArgv()) != -1 )
{
// abort();
// abort();
}
......@@ -104,15 +105,15 @@ end_private(false)
throw SystemError( err.str() );
}
mylog = make_shared<DebugStream>();
mylog = make_shared<DebugStream>();
mylog->setLogName(myname);
{
ostringstream s;
s << argprefix << "log";
conf->initLogStream(mylog,s.str());
conf->initLogStream(mylog, s.str());
}
loga = make_shared<LogAgregator>(myname+"-loga");
loga = make_shared<LogAgregator>(myname + "-loga");
loga->add(mylog);
loga->add(ulog());
......@@ -129,13 +130,15 @@ end_private(false)
logserv_host = conf->getArg2Param("--" + argprefix + "logserver-host", it.getProp("logserverHost"), "localhost");
logserv_port = conf->getArgPInt("--" + argprefix + "logserver-port", it.getProp("logserverPort"), getId());
}
forceOut = conf->getArgPInt("--" + argprefix + "force-out",it.getProp("forceOut"),false);
string heart = conf->getArgParam("--" + argprefix + "heartbeat-id",it.getProp("heartbeat_id"));
forceOut = conf->getArgPInt("--" + argprefix + "force-out", it.getProp("forceOut"), false);
string heart = conf->getArgParam("--" + argprefix + "heartbeat-id", it.getProp("heartbeat_id"));
if( !heart.empty() )
{
idHeartBeat = conf->getSensorID(heart);
if( idHeartBeat == DefaultObjectId )
{
ostringstream err;
......@@ -143,31 +146,34 @@ end_private(false)
throw SystemError(err.str());
}
int heartbeatTime = conf->getArgPInt("--" + argprefix + "heartbeat-time",it.getProp("heartbeatTime"),conf->getHeartBeatTime());
if( heartbeatTime>0 )
int heartbeatTime = conf->getArgPInt("--" + argprefix + "heartbeat-time", it.getProp("heartbeatTime"), conf->getHeartBeatTime());
if( heartbeatTime > 0 )
ptHeartBeat.setTiming(heartbeatTime);
else
ptHeartBeat.setTiming(UniSetTimer::WaitUpTime);
maxHeartBeat = conf->getArgPInt("--" + argprefix + "heartbeat-max",it.getProp("heartbeat_max"), 10);
maxHeartBeat = conf->getArgPInt("--" + argprefix + "heartbeat-max", it.getProp("heartbeat_max"), 10);
}
// Инициализация значений
si.id = UniSetTypes::DefaultObjectId;
si.node = conf->getLocalNode();
sleep_msec = conf->getArgPInt("--" + argprefix + "sleep-msec","150", 150);
sleep_msec = conf->getArgPInt("--" + argprefix + "sleep-msec", "150", 150);
string s_resetTime("");
if( s_resetTime.empty() )
s_resetTime = "500";
resetMsgTime = uni_atoi(init3_str(conf->getArgParam("--" + argprefix + "resetMsgTime"),conf->getProp(cnode,"resetMsgTime"),s_resetTime));
resetMsgTime = uni_atoi(init3_str(conf->getArgParam("--" + argprefix + "resetMsgTime"), conf->getProp(cnode, "resetMsgTime"), s_resetTime));
ptResetMsg.setTiming(resetMsgTime);
int sm_tout = conf->getArgInt("--" + argprefix + "sm-ready-timeout","");
int sm_tout = conf->getArgInt("--" + argprefix + "sm-ready-timeout", "");
if( sm_tout == 0 )
smReadyTimeout = 60000;
else if( sm_tout < 0 )
......@@ -175,8 +181,8 @@ end_private(false)
else
smReadyTimeout = sm_tout;
smTestID = conf->getSensorID(init3_str(conf->getArgParam("--" + argprefix + "sm-test-id"),conf->getProp(cnode,"smTestID"),""));
smTestID = conf->getSensorID(init3_str(conf->getArgParam("--" + argprefix + "sm-test-id"), conf->getProp(cnode, "smTestID"), ""));
if( smTestID == DefaultObjectId )
smTestID = getSMTestID();
......@@ -187,7 +193,7 @@ end_private(false)
ptStartUpTimeout.setTiming(msec);
// ===================== <variables> =====================
// ===================== end of <variables> =====================
vmonit(sleep_msec);
......@@ -209,17 +215,17 @@ UObject_SK::~UObject_SK()
void UObject_SK::updateValues()
{
// Опрашиваем все входы...
}
// -----------------------------------------------------------------------------
void UObject_SK::updatePreviousValues()
{
}
// -----------------------------------------------------------------------------
void UObject_SK::checkSensors()
{
}
// -----------------------------------------------------------------------------
bool UObject_SK::setMsg( UniSetTypes::ObjectId _code, bool _state )
......@@ -227,28 +233,28 @@ bool UObject_SK::setMsg( UniSetTypes::ObjectId _code, bool _state )
if( _code == UniSetTypes::DefaultObjectId )
{
mylog8 << myname << "(setMsg): попытка послать сообщение с DefaultObjectId" << endl;
return false;
return false;
}
mylog8 << myname << "(setMsg): " << ( _state ? "SEND " : "RESET " ) << endl;
// взводим автоматический сброс
if( _state )
{
ptResetMsg.reset();
trResetMsg.hi(false);
}
mylog8 << myname << "(setMsg): " << ( _state ? "SEND " : "RESET " ) << endl;
// взводим автоматический сброс
if( _state )
{
ptResetMsg.reset();
trResetMsg.hi(false);
}
mylog8 << myname << "(setMsg): not found MessgeOID?!!" << endl;
mylog8 << myname << "(setMsg): not found MessgeOID?!!" << endl;
return false;
}
// -----------------------------------------------------------------------------
void UObject_SK::resetMsg()
{
mylog8 << myname << "(resetMsg): reset messages.." << endl;
// reset messages
mylog8 << myname << "(resetMsg): reset messages.." << endl;
// reset messages
}
// -----------------------------------------------------------------------------
......@@ -257,7 +263,7 @@ UniSetTypes::ObjectId UObject_SK::getSMTestID()
if( smTestID != DefaultObjectId )
return smTestID;
return DefaultObjectId;
}
......@@ -268,7 +274,7 @@ void UObject_SK::testMode( bool _state )
return;
// отключаем все выходы
}
// -----------------------------------------------------------------------------
std::string UObject_SK::dumpIO()
......@@ -278,44 +284,48 @@ std::string UObject_SK::dumpIO()
std::list<std::string> v_in;
ostringstream s1;
std::list<std::string> v_out;
s << endl;
int n = 0;
for( const auto& e: v_in )
for( const auto& e : v_in )
{
s << e;
if( (n++)%2 )
if( (n++) % 2 )
s << std::endl;
}
s << endl;
n = 0;
for( const auto& e: v_out )
for( const auto& e : v_out )
{
s << e;
if( (n++)%2 )
if( (n++) % 2 )
s << std::endl;
}
return std::move(s.str());
}
// ----------------------------------------------------------------------------
std::string UObject_SK::str( UniSetTypes::ObjectId id, bool showLinkName ) const
{
ostringstream s;
return "";
}
// ----------------------------------------------------------------------------
std::string UObject_SK::strval( UniSetTypes::ObjectId id, bool showLinkName ) const
{
ostringstream s;
return "";
}
// ----------------------------------------------------------------------------
......@@ -336,19 +346,19 @@ void UObject_SK::processingMessage( const UniSetTypes::VoidMessage* _msg )
{
case Message::SensorInfo:
preSensorInfo( reinterpret_cast<const SensorMessage*>(_msg) );
break;
break;
case Message::Timer:
preTimerInfo( reinterpret_cast<const TimerMessage*>(_msg) );
break;
break;
case Message::SysCommand:
preSysCommand( reinterpret_cast<const SystemMessage*>(_msg) );
break;
break;
default:
break;
}
}
}
catch( const Exception& ex )
{
......@@ -362,11 +372,13 @@ void UObject_SK::preSysCommand( const SystemMessage* _sm )
{
case SystemMessage::WatchDog:
myinfo << myname << "(preSysCommand): WatchDog" << endl;
if( !active || !ptStartUpTimeout.checkTime() )
{
mywarn << myname << "(preSysCommand): игнорируем WatchDog, потому-что только-что стартанули" << endl;
break;
}
case SystemMessage::StartUp:
{
if( !logserv_host.empty() && logserv_port != 0 && !logserv->isRunning() )
......@@ -387,21 +399,22 @@ void UObject_SK::preSysCommand( const SystemMessage* _sm )
active = true;
break;
}
case SystemMessage::FoldUp:
case SystemMessage::Finish:
preAskSensors(UniversalIO::UIODontNotify);
askSensors(UniversalIO::UIODontNotify);
break;
case SystemMessage::LogRotate:
{
// переоткрываем логи
mylogany << myname << "(preSysCommand): logRotate" << endl;
string fname( log()->getLogFile() );
if( !fname.empty() )
{
mylog->logFile(fname.c_str(),true);
mylog->logFile(fname.c_str(), true);
mylogany << myname << "(preSysCommand): ***************** mylog LOG ROTATE *****************" << endl;
}
}
......@@ -410,7 +423,7 @@ void UObject_SK::preSysCommand( const SystemMessage* _sm )
default:
break;
}
sysCommand(_sm);
}
// -----------------------------------------------------------------------------
......@@ -418,30 +431,32 @@ void UObject_SK::preSysCommand( const SystemMessage* _sm )
UniSetTypes::SimpleInfo* UObject_SK::getInfo( CORBA::Long userparam )
{
UniSetTypes::SimpleInfo_var i = UniSetObject::getInfo(userparam);
ostringstream inf;
inf << i->info << endl;
inf << "LogServer: " << logserv_host << ":" << logserv_port << endl;
inf << dumpIO() << endl;
inf << endl;
auto timers = getTimersList();
inf << "Timers[" << timers.size() << "]:" << endl;
for( const auto& t: timers )
for( const auto& t : timers )
{
inf << " " << setw(15) << getTimerName(t.id) << "[" << t.id << "]: msec="
<< setw(6) << t.tmr.getInterval()
<< " timeleft=" << setw(6) << t.curTimeMS
<< " tick=" << setw(3) << ( t.curTick>=0 ? t.curTick : -1 )
<< " tick=" << setw(3) << ( t.curTick >= 0 ? t.curTick : -1 )
<< endl;
}
inf << endl;
inf << vmon.pretty_str() << endl;
inf << endl;
inf << getMonitInfo() << endl;
i->info = inf.str().c_str();
return i._retn();
}
// -----------------------------------------------------------------------------
......@@ -456,7 +471,7 @@ void UObject_SK::sigterm( int signo )
// -----------------------------------------------------------------------------
bool UObject_SK::activateObject()
{
// блокирование обработки Startup
// блокирование обработки Startup
// пока не пройдёт инициализация датчиков
// см. preSysCommand()
{
......@@ -482,47 +497,47 @@ void UObject_SK::waitSM( int wait_msec, ObjectId _testID )
if( _testID == DefaultObjectId )
return;
myinfo << myname << "(waitSM): waiting SM ready "
<< wait_msec << " msec"
<< " testID=" << _testID << endl;
<< wait_msec << " msec"
<< " testID=" << _testID << endl;
// waitReady можно использовать т.к. датчик это по сути IONotifyController
if( !ui->waitReady(_testID,wait_msec) )
if( !ui->waitReady(_testID, wait_msec) )
{
ostringstream err;
err << myname
<< "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение "
err << myname
<< "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение "
<< wait_msec << " мсек";
mycrit << err.str() << endl;
// terminate();
// abort();
mycrit << err.str() << endl;
// terminate();
// abort();
raise(SIGTERM);
terminate();
// throw SystemError(err.str());
// throw SystemError(err.str());
}
if( !ui->waitWorking(_testID,wait_msec) )
if( !ui->waitWorking(_testID, wait_msec) )
{
ostringstream err;
err << myname
<< "(waitSM): Не дождались готовности(work) SharedMemory к работе в течение "
<< wait_msec << " мсек";
mycrit << err.str() << endl;
// terminate();
// abort();
// terminate();
// abort();
raise(SIGTERM);
// throw SystemError(err.str());
// throw SystemError(err.str());
}
}
// ----------------------------------------------------------------------------
std::string UObject_SK::help()
{
ostringstream s;
return std::move(s.str());
}
// ----------------------------------------------------------------------------
......@@ -532,39 +547,42 @@ void UObject_SK::callback()
{
if( !active )
return;
try
{
// проверка таймеров
checkTimers(this);
if( resetMsgTime>0 && trResetMsg.hi(ptResetMsg.checkTime()) )
if( resetMsgTime > 0 && trResetMsg.hi(ptResetMsg.checkTime()) )
{
// cout << myname << ": ********* reset messages *********" << endl;
// cout << myname << ": ********* reset messages *********" << endl;
resetMsg();
}
// обработка сообщений (таймеров и т.п.)
for( unsigned int i=0; i<20; i++ )
for( unsigned int i = 0; i < 20; i++ )
{
auto m = receiveMessage();
if( !m )
break;
processingMessage(m.get());
auto m = receiveMessage();
if( !m )
break;
processingMessage(m.get());
updateOutputs(forceOut);
// updatePreviousValues();
// updatePreviousValues();
}
// Выполнение шага программы
step();
// "сердцебиение"
if( idHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
if( idHeartBeat != DefaultObjectId && ptHeartBeat.checkTime() )
{
try
{
ui->setValue(idHeartBeat,maxHeartBeat);
ui->setValue(idHeartBeat, maxHeartBeat);
ptHeartBeat.reset();
}
catch( const Exception& ex )
......@@ -579,21 +597,21 @@ void UObject_SK::callback()
}
catch( const Exception& ex )
{
mycrit << myname << "(execute): " << ex << endl;
mycrit << myname << "(execute): " << ex << endl;
}
catch( const CORBA::SystemException& ex )
{
mycrit << myname << "(execute): СORBA::SystemException: "
<< ex.NP_minorString() << endl;
mycrit << myname << "(execute): СORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
catch( const std::exception& ex )
{
mycrit << myname << "(execute): catch " << ex.what() << endl;
}
catch( const std::exception&ex )
{
mycrit << myname << "(execute): catch " << ex.what() << endl;
}
if( !active )
return;
msleep( sleep_msec );
}
// -----------------------------------------------------------------------------
......@@ -601,32 +619,32 @@ void UObject_SK::setValue( UniSetTypes::ObjectId _sid, long _val )
{
if( _sid == UniSetTypes::DefaultObjectId )
return;
ui->setValue(_sid,_val);
ui->setValue(_sid, _val);
}
// -----------------------------------------------------------------------------
void UObject_SK::updateOutputs( bool _force )
{
}
// -----------------------------------------------------------------------------
void UObject_SK::preSensorInfo( const UniSetTypes::SensorMessage* _sm )
{
sensorInfo(_sm);
}
// -----------------------------------------------------------------------------
void UObject_SK::initFromSM()
{
}
// -----------------------------------------------------------------------------
void UObject_SK::askSensor( UniSetTypes::ObjectId _sid, UniversalIO::UIOCommand _cmd, UniSetTypes::ObjectId _node )
{
ui->askRemoteSensor(_sid,_cmd,_node,getId());
ui->askRemoteSensor(_sid, _cmd, _node, getId());
}
// -----------------------------------------------------------------------------
long UObject_SK::getValue( UniSetTypes::ObjectId _sid )
......@@ -639,7 +657,7 @@ long UObject_SK::getValue( UniSetTypes::ObjectId _sid )
}
catch( const Exception& ex )
{
mycrit << myname << "(getValue): " << ex << endl;
mycrit << myname << "(getValue): " << ex << endl;
throw;
}
}
......@@ -648,33 +666,35 @@ long UObject_SK::getValue( UniSetTypes::ObjectId _sid )
void UObject_SK::preAskSensors( UniversalIO::UIOCommand _cmd )
{
PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() )
{
{
cout << myname << "(preAskSensors): wait activate..." << endl;
msleep(300);
if( activated )
break;
}
if( !activated )
mycrit << myname
<< "(preAskSensors): ************* don`t activated?! ************" << endl;
<< "(preAskSensors): ************* don`t activated?! ************" << endl;
for( ;; )
{
try
{
return;
}
catch( const Exception& ex )
{
mycrit << myname << "(preAskSensors): " << ex << endl;
mycrit << myname << "(preAskSensors): " << ex << endl;
}
catch( const std::exception& ex )
{
mycrit << myname << "(execute): catch " << ex.what() << endl;
}
catch( const std::exception&ex )
{
mycrit << myname << "(execute): catch " << ex.what() << endl;
}
msleep(askPause);
}
......
......@@ -78,7 +78,7 @@ class LogSession
std::string getShortInfo();
protected:
// LogSession( ost::TCPSocket& server );
// LogSession( ost::TCPSocket& server );
void event( ev::async& watcher, int revents );
void callback( ev::io& watcher, int revents );
......
......@@ -147,7 +147,7 @@ class ThreadCreator:
(initm->*initact)();
}
virtual void terminate(){}
virtual void terminate() {}
private:
ThreadCreator();
......
......@@ -17,7 +17,7 @@ class UDPSocketU:
{}
UDPSocketU( const std::string& bind, int port ):
Poco::Net::DatagramSocket(Poco::Net::SocketAddress(bind, port),true)
Poco::Net::DatagramSocket(Poco::Net::SocketAddress(bind, port), true)
{}
virtual ~UDPSocketU() {}
......@@ -38,7 +38,7 @@ class UDPReceiveU:
{}
UDPReceiveU( const std::string& bind, int port):
Poco::Net::DatagramSocket(Poco::Net::SocketAddress(bind, port),true)
Poco::Net::DatagramSocket(Poco::Net::SocketAddress(bind, port), true)
{}
virtual ~UDPReceiveU() {}
......
......@@ -158,7 +158,7 @@ class VMonitor
VMON_DEF_MAP(bool);
VMON_DEF_MAP(float);
VMON_DEF_MAP(double);
std::unordered_map<const Poco::Int64*,const std::string> m_Int64;
std::unordered_map<const Poco::Int64*, const std::string> m_Int64;
VMON_DEF_MAP3(std::string, string);
};
// --------------------------------------------------------------------------
......
......@@ -36,7 +36,7 @@ ModbusTCPMaster::ModbusTCPMaster():
{
setCRCNoCheckit(true);
// dlog->level(Debug::ANY);
// dlog->level(Debug::ANY);
}
// -------------------------------------------------------------------------
......@@ -61,7 +61,7 @@ void ModbusTCPMaster::setChannelTimeout( timeout_t msec )
Poco::Timespan old = tcp->getReceiveTimeout();;
//timeout_t old = tcp->getReceiveTimeout();
Poco::Timespan tmsec(msec*1000);
Poco::Timespan tmsec(msec * 1000);
if( old == msec )
return;
......@@ -114,14 +114,14 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
assert(timeout);
ptTimeout.setTiming(timeout);
tcp->setReceiveTimeout(timeout*1000);
tcp->setReceiveTimeout(timeout * 1000);
msg.makeHead(++nTransaction, crcNoCheckit);
for( size_t i = 0; i < 2; i++ )
{
//if( tcp->isPending(ost::Socket::pendingOutput, timeout) )
if( tcp->poll(timeout*1000,Poco::Net::Socket::SELECT_WRITE) )
if( tcp->poll(timeout * 1000, Poco::Net::Socket::SELECT_WRITE) )
{
mbErrCode res = send(msg);
......@@ -167,7 +167,7 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
//tcp->sync();
if( tcp->poll(timeout*1000,Poco::Net::Socket::SELECT_READ ) )
if( tcp->poll(timeout * 1000, Poco::Net::Socket::SELECT_READ ) )
{
size_t ret = 0;
......@@ -211,6 +211,7 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
dlog->warn() << "(query): tcp error: " << e.getString() << endl;
}
}
#endif
cleanInputStream();
tcp->forceDisconnect();
......@@ -385,7 +386,7 @@ void ModbusTCPMaster::reconnect()
{
tcp = make_shared<UTCPStream>();
tcp->create(iaddr, port, 500);
tcp->setReceiveTimeout(replyTimeOut_ms*1000);
tcp->setReceiveTimeout(replyTimeOut_ms * 1000);
tcp->setKeepAliveParams((replyTimeOut_ms > 1000 ? replyTimeOut_ms / 1000 : 1));
tcp->setNoDelay(true);
}
......@@ -411,7 +412,7 @@ void ModbusTCPMaster::reconnect()
// -------------------------------------------------------------------------
void ModbusTCPMaster::connect( const std::string& addr, int _port )
{
Net::SocketAddress sa(addr,_port);
Net::SocketAddress sa(addr, _port);
connect(sa, _port);
}
// -------------------------------------------------------------------------
......@@ -433,9 +434,9 @@ void ModbusTCPMaster::connect( const Poco::Net::SocketAddress& addr, int _port )
try
{
tcp = make_shared<UTCPStream>();
tcp->create(iaddr,port,500);
tcp->create(iaddr, port, 500);
//tcp->connect(addr,500);
tcp->setReceiveTimeout(replyTimeOut_ms*1000);
tcp->setReceiveTimeout(replyTimeOut_ms * 1000);
tcp->setKeepAlive(true); // tcp->setKeepAliveParams((replyTimeOut_ms > 1000 ? replyTimeOut_ms / 1000 : 1));
tcp->setNoDelay(true);
}
......@@ -458,6 +459,7 @@ void ModbusTCPMaster::connect( const Poco::Net::SocketAddress& addr, int _port )
s << "(ModbusTCPMaster): connection " << iaddr << ":" << port << " error: " << e.what();
dlog->crit() << iaddr << std::endl;
}
tcp = nullptr;
}
catch( ... )
......@@ -468,6 +470,7 @@ void ModbusTCPMaster::connect( const Poco::Net::SocketAddress& addr, int _port )
s << "(ModbusTCPMaster): connection " << iaddr << ":" << port << " error: catch ...";
dlog->crit() << s.str() << std::endl;
}
tcp = nullptr;
}
}
......@@ -500,10 +503,11 @@ bool ModbusTCPMaster::isConnection() const
{
return tcp && tcp->isConnected();
#if 0
if( !tcp )
return false;
if( tcp->poll({0,5},Poco::Net::Socket::SELECT_READ) )
if( tcp->poll({0, 5}, Poco::Net::Socket::SELECT_READ) )
return (tcp->available() > 0);
return false;
......
......@@ -52,7 +52,7 @@ bool TCPCheck::check( const std::string& _ip, int _port, timeout_t tout, timeout
setResult(false);
ThreadCreator<TCPCheck> t(this, &TCPCheck::check_thread);
// t.setCancel(ost::Thread::cancelDeferred);
// t.setCancel(ost::Thread::cancelDeferred);
t.start();
PassiveTimer pt(tout);
......
......@@ -28,7 +28,7 @@ void USocket::init( bool throwflag )
{
//setError(throwflag);
setKeepAlive(true);
Socket::setLinger(true,1);
Socket::setLinger(true, 1);
//setLinger(true);
setKeepAliveParams();
}
......
......@@ -27,7 +27,7 @@ UTCPSocket::UTCPSocket( int sock ):
}
// -------------------------------------------------------------------------
UTCPSocket::UTCPSocket( const string& host, int port ):
Poco::Net::ServerSocket(Poco::Net::SocketAddress(host,port),true)
Poco::Net::ServerSocket(Poco::Net::SocketAddress(host, port), true)
{
init();
}
......@@ -45,7 +45,7 @@ int UTCPSocket::getSocket()
void UTCPSocket::init()
{
Poco::Net::ServerSocket::setKeepAlive(true);
Poco::Net::ServerSocket::setLinger(true,1);
Poco::Net::ServerSocket::setLinger(true, 1);
setKeepAliveParams();
}
// -------------------------------------------------------------------------
......@@ -51,7 +51,7 @@ bool UTCPStream::isSetLinger() const
{
bool on;
int sec;
Poco::Net::StreamSocket::getLinger(on,sec);
Poco::Net::StreamSocket::getLinger(on, sec);
return on;
}
// -------------------------------------------------------------------------
......@@ -61,11 +61,11 @@ void UTCPStream::forceDisconnect()
{
bool on;
int sec;
Poco::Net::StreamSocket::getLinger(on,sec);
setLinger(false,0);
Poco::Net::StreamSocket::getLinger(on, sec);
setLinger(false, 0);
close();
//shutdown();
Poco::Net::StreamSocket::setLinger(on,sec);
Poco::Net::StreamSocket::setLinger(on, sec);
}
catch( Poco::Net::NetException& )
{
......@@ -86,10 +86,10 @@ timeout_t UTCPStream::getTimeout() const
// -------------------------------------------------------------------------
void UTCPStream::create(const std::string& hname, int port, timeout_t tout_msec )
{
Poco::Net::SocketAddress sa(hname,port);
connect(sa,tout_msec*1000);
Poco::Net::SocketAddress sa(hname, port);
connect(sa, tout_msec * 1000);
setKeepAlive(true);
Poco::Net::StreamSocket::setLinger(true,1);
Poco::Net::StreamSocket::setLinger(true, 1);
setKeepAliveParams();
}
// -------------------------------------------------------------------------
......@@ -103,6 +103,7 @@ bool UTCPStream::isConnected()
catch( Poco::Net::NetException& ex )
{
}
return false;
}
// -------------------------------------------------------------------------
......@@ -78,8 +78,8 @@ void LogReader::connect( const std::string& _addr, int _port, timeout_t msec )
{
tcp = make_shared<UTCPStream>();
tcp->create(iaddr, port, msec );
tcp->setReceiveTimeout(inTimeout*1000);
tcp->setSendTimeout(outTimeout*1000);
tcp->setReceiveTimeout(inTimeout * 1000);
tcp->setSendTimeout(outTimeout * 1000);
tcp->setKeepAlive(true);
tcp->setBlocking(true);
}
......@@ -91,6 +91,7 @@ void LogReader::connect( const std::string& _addr, int _port, timeout_t msec )
s << "(LogReader): connection " << s.str() << " timeout..";
rlog.crit() << s.str() << std::endl;
}
tcp = 0;
}
catch( const Poco::Net::NetException& e )
......@@ -253,7 +254,7 @@ void LogReader::sendCommand(const std::string& _addr, int _port, std::vector<Com
{
int a = 2;
while( a > 0 && tcp->poll(reply_timeout*1000,Poco::Net::Socket::SELECT_READ) )
while( a > 0 && tcp->poll(reply_timeout * 1000, Poco::Net::Socket::SELECT_READ) )
{
int n = tcp->available();
......@@ -335,7 +336,7 @@ void LogReader::readlogs( const std::string& _addr, int _port, LogServerTypes::C
send_ok = true;
}
while( tcp->poll(inTimeout*1000, Poco::Net::Socket::SELECT_READ) )
while( tcp->poll(inTimeout * 1000, Poco::Net::Socket::SELECT_READ) )
{
ssize_t n = tcp->available();
......@@ -396,10 +397,10 @@ void LogReader::sendCommand(LogServerTypes::lsMessage& msg, bool verbose )
try
{
if( tcp->poll(outTimeout*1000,Poco::Net::Socket::SELECT_WRITE) )
if( tcp->poll(outTimeout * 1000, Poco::Net::Socket::SELECT_WRITE) )
{
rlog.info() << "(LogReader): ** send command: cmd='" << msg.cmd << "' logname='" << msg.logname << "' data='" << msg.data << "'" << endl;
tcp->sendBytes((unsigned char*)(&msg),sizeof(msg));
tcp->sendBytes((unsigned char*)(&msg), sizeof(msg));
}
else
rlog.warn() << "(LogReader): **** SEND COMMAND ('" << msg.cmd << "' FAILED!" << endl;
......
......@@ -336,7 +336,7 @@ size_t LogSession::readData( unsigned char* buf, int len )
{
return 0;
}
catch( Poco::Net::ConnectionResetException &ex )
catch( Poco::Net::ConnectionResetException& ex )
{
}
......
......@@ -104,6 +104,7 @@ SimpleInfo* IONotifyController::getInfo( ::CORBA::Long userparam )
if( userparam == 2 )
{
bool ok = false;
for( const auto& c : i.clst )
{
if( c.lostEvents > 0 )
......
......@@ -1293,7 +1293,7 @@ namespace UniSetTypes
}
// инициализация исключений для libcommoncpp
// ost::Thread::setException(ost::Thread::throwException);
// ost::Thread::setException(ost::Thread::throwException);
atexit( UniSetActivator::normalexit );
set_terminate( UniSetActivator::normalterminate ); // ловушка для неизвестных исключений
......
......@@ -137,7 +137,7 @@ VMON_IMPL_ADD2(char)
VMON_IMPL_ADD(bool)
VMON_IMPL_ADD(float)
VMON_IMPL_ADD(double)
VMON_IMPL_ADD_N(Poco::Int64,m_Int64)
VMON_IMPL_ADD_N(Poco::Int64, m_Int64)
VMON_IMPL_ADD3(std::string, string)
//VMON_IMPL_ADD3(UniSetTypes::ObjectId,ObjectId)
// --------------------------------------------------------------------------
......
......@@ -17,27 +17,29 @@ int main(int argc, const char** argv)
Net::StreamSocket socket(sa);
Net::SocketStream str(socket);
str << "GET / HTTP/1.1\r\n"
"Host: habrahabr.ru\r\n"
"\r\n";
"Host: habrahabr.ru\r\n"
"\r\n";
str.flush();
StreamCopier::copyStream(str, cout);
//Слушающий сокет
Net::ServerSocket srv(8080); // Биндим и начинаем слушать
while(true)
{
Net::StreamSocket ss = srv.acceptConnection();
{
Net::SocketStream str(ss);
str << "HTTP/1.0 200 OK\r\n"
"Content-Type: text/html\r\n"
"\r\n"
"<html><head><title>Доброго времени суток</title></head>"
"<body><h1><a href=\"http://habrahabr.ru\">Добро пожаловать на Хабр.</a></h1></body></html>"
"Content-Type: text/html\r\n"
"\r\n"
"<html><head><title>Доброго времени суток</title></head>"
"<body><h1><a href=\"http://habrahabr.ru\">Добро пожаловать на Хабр.</a></h1></body></html>"
<< flush;
}
}
return 0;
}
catch( const std::exception& e )
......
......@@ -32,13 +32,13 @@ class PtrMapHashFn
int main( int argc, const char** argv )
{
unordered_map<const long*, const long*,PtrMapHashFn> vmap;
unordered_map<const long*, const long*, PtrMapHashFn> vmap;
const long id = 10;
long prive_val = 100;
const long& val(prive_val);
vmap.emplace(&id,&val);
vmap.emplace(&id, &val);
auto i = vmap.find(&id);
......
......@@ -20,7 +20,7 @@ bool run_test_server()
while( !cancel )
{
if( sock.poll(500000,Poco::Net::Socket::SELECT_READ) )
if( sock.poll(500000, Poco::Net::Socket::SELECT_READ) )
{
}
......
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