/************************************************************************* > File Name : OperateNos.cpp > Author : TL Song > EMail : songtianlun@frytea.com > Created Time : Thu 03 Dec 2020 09:13:38 AM CST ************************************************************************/ #include "FOperateNos.h" int FOperateNos::StartNos(int iNosIdx) { // char szmsg[1024] = {0}; // strcpy(szmsg,"Start Nos"); Web_Msg_T webMsg; memset(&webMsg, 0x00, sizeof(webMsg)); webMsg.nos_id = iNosIdx; webMsg.nos_op = NOS_POWER_ON; SendCmdToShd(&webMsg, sizeof(webMsg)); std::cout << "Nos" << webMsg.nos_id << " will be power on, result " << webMsg.result << std::endl; } int FOperateNos::StopNos(int iNosIdx) { Web_Msg_T webMsg; memset(&webMsg, 0x00, sizeof(webMsg)); webMsg.nos_id = iNosIdx; webMsg.nos_op = NOS_POWER_OFF; SendCmdToShd(&webMsg, sizeof(webMsg)); std::cout << "Nos" << webMsg.nos_id << " will be power off, result " << webMsg.result << std::endl; } int FOperateNos::RestartNos(int iNosIdx) { Web_Msg_T webMsg; memset(&webMsg, 0x00, sizeof(webMsg)); webMsg.nos_id = iNosIdx; webMsg.nos_op = NOS_RESTART; SendCmdToShd(&webMsg, sizeof(webMsg)); std::cout << "Nos" << webMsg.nos_id << " will be restart, result " << webMsg.result << std::endl; } void FOperateNos::Init() { reader = INIReader("operate_nos_conf.ini"); if (reader.ParseError() < 0) std::cout << "Can't load 'test.ini'\n"; std::cout << "Init F Operate Nos" << std::endl; InitSocket(); } void FOperateNos::InitSocket() { char szPubKey[64] = {0}; char szPriKey[64] = {0}; char szSerKey[64] = {0}; char szaddr[128] = {0}; ctx = zmq_ctx_new(); sock = zmq_socket(ctx, ZMQ_REQ); strcpy(szSerKey, ZMQ_PUBLIC_KEY_1); snprintf(szaddr, sizeof(szaddr), "tcp://%s:%d", \ reader.Get("general", "shd_ip", "UNKNOWN").c_str(), \ reader.GetInteger("general", "shd_port", -1) ); std::cout << "Connect to zmq server : " << szaddr << std::endl; // 加密 // zmq_setsockopt(sock, ZMQ_CURVE_SERVERKEY, szSerKey, strlen(szSerKey)); // zmq_curve_keypair(szPubKey, szPriKey); // zmq_setsockopt(sock, ZMQ_CURVE_PUBLICKEY, szPubKey, strlen(szPubKey)); // zmq_setsockopt(sock, ZMQ_CURVE_SECRETKEY, szPriKey, strlen(szPriKey)); zmq_connect(sock, szaddr); // 超时 unsigned int uiTimeout = 30 * 1000; zmq_setsockopt(sock, ZMQ_RCVTIMEO, &uiTimeout, sizeof(uiTimeout)); } void FOperateNos::DestroySocket() { zmq_close(sock); zmq_ctx_term(ctx); zmq_ctx_destroy(ctx); } int FOperateNos::SendCmdToShd(void * sMsg, int iMsgLen) { int iResult; iResult = zmq_send(sock, sMsg, iMsgLen, 0); if(0 > iResult) std::cout << "Send Msg To Shd Error, Code " << iResult << std::endl; iResult = zmq_recv(sock, sMsg, iMsgLen, 0); if(0 > iResult) std::cout << "Recv Msg From Shd Error, Code " << iResult << std::endl; }