remove mySock

This commit is contained in:
Erik Frojdh 2019-05-16 11:14:03 +02:00
parent e252b8e0e9
commit c6651df1b2
7 changed files with 91 additions and 180 deletions

View File

@ -3220,10 +3220,10 @@ int slsDetector::setReceiverOnline(int value) {
} else { } else {
shm()->rxOnlineFlag = OFFLINE_FLAG; shm()->rxOnlineFlag = OFFLINE_FLAG;
if (value == ONLINE_FLAG) { if (value == ONLINE_FLAG) {
// connect and set offline flag // Connect and ask for receiver id to verify that
auto receiver = // it's online and working
ReceiverSocket(shm()->rxHostname, shm()->rxTCPPort); int64_t retval{0};
receiver.close(); sendToReceiver(F_GET_RECEIVER_ID, nullptr, retval);
shm()->rxOnlineFlag = ONLINE_FLAG; shm()->rxOnlineFlag = ONLINE_FLAG;
if (shm()->receiverAPIVersion == 0) { if (shm()->receiverAPIVersion == 0) {
checkReceiverVersionCompatibility(); checkReceiverVersionCompatibility();

View File

@ -299,6 +299,9 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
int set_dbit_offset(sls::ServerInterface2 &socket); int set_dbit_offset(sls::ServerInterface2 &socket);
int LogSocketCrash();
void NullObjectError(int& ret, char* mess);
/** detector type */ /** detector type */
detectorType myDetectorType; detectorType myDetectorType;
@ -309,25 +312,25 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
int (slsReceiverTCPIPInterface::*flist[NUM_REC_FUNCTIONS])(sls::ServerInterface2& socket); int (slsReceiverTCPIPInterface::*flist[NUM_REC_FUNCTIONS])(sls::ServerInterface2& socket);
/** Message */ /** Message */
char mess[MAX_STR_LENGTH]; char mess[MAX_STR_LENGTH]{"dummy message"};
/** success/failure */ /** success/failure */
int ret; int ret{OK};
/** function index */ /** function index */
int fnum; int fnum{-1};
/** Lock Status if server locked to a client */ /** Lock Status if server locked to a client */
int lockStatus; int lockStatus{0};
/** kill tcp server thread */ /** kill tcp server thread */
int killTCPServerThread; int killTCPServerThread{0};
/** thread for TCP server */ /** thread for TCP server */
pthread_t TCPServer_thread; pthread_t TCPServer_thread;
/** tcp thread created flag*/ /** tcp thread created flag*/
bool tcpThreadCreated; bool tcpThreadCreated{false};
/** port number */ /** port number */
int portNumber; int portNumber;
@ -345,16 +348,16 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
* we write depending on file write enable * we write depending on file write enable
* users get data to write depending on call backs registered * users get data to write depending on call backs registered
*/ */
int (*startAcquisitionCallBack)(char*, char*, uint64_t, uint32_t, void*); int (*startAcquisitionCallBack)(char*, char*, uint64_t, uint32_t, void*) = nullptr;
void *pStartAcquisition; void *pStartAcquisition{nullptr};
/** /**
* Call back for acquisition finished * Call back for acquisition finished
* callback argument is * callback argument is
* total frames caught * total frames caught
*/ */
void (*acquisitionFinishedCallBack)(uint64_t, void*); void (*acquisitionFinishedCallBack)(uint64_t, void*) = nullptr;
void *pAcquisitionFinished; void *pAcquisitionFinished{nullptr};
/** /**
@ -365,7 +368,7 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
* dataSize in bytes is the size of the data in bytes. * dataSize in bytes is the size of the data in bytes.
*/ */
void (*rawDataReadyCallBack)(char* , void (*rawDataReadyCallBack)(char* ,
char*, uint32_t, void*); char*, uint32_t, void*) = nullptr;
/** /**
* Call back for raw data (modified) * Call back for raw data (modified)
@ -375,22 +378,17 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
* revDatasize is the reference of data size in bytes. Can be modified to the new size to be written/streamed. (only smaller value). * revDatasize is the reference of data size in bytes. Can be modified to the new size to be written/streamed. (only smaller value).
*/ */
void (*rawDataModifyReadyCallBack)(char* , void (*rawDataModifyReadyCallBack)(char* ,
char*, uint32_t &, void*); char*, uint32_t &, void*) = nullptr;
void *pRawDataReady; void *pRawDataReady{nullptr};
protected: protected:
/** Socket */
MySocketTCP* mySock;
std::unique_ptr<sls::ServerSocket> server{nullptr}; std::unique_ptr<sls::ServerSocket> server{nullptr};
/** client interface */
ServerInterface* interface;
private: private:
int VerifyLock(int &ret, char *mess); int VerifyLock(int &ret, char *mess);
int VerifyLockAndIdle(int &ret, char *mess, int fnum); int VerifyLockAndIdle(int &ret, char *mess, int fnum);

View File

@ -5,7 +5,6 @@
#include "FixedCapacityContainer.h" #include "FixedCapacityContainer.h"
#include "MySocketTCP.h"
#include "ServerSocket.h" #include "ServerSocket.h"
#include "ServerInterface.h" #include "ServerInterface.h"
#include "slsReceiver.h" #include "slsReceiver.h"
@ -13,6 +12,7 @@
#include "slsReceiverTCPIPInterface.h" #include "slsReceiverTCPIPInterface.h"
#include "slsReceiverUsers.h" #include "slsReceiverUsers.h"
#include "versionAPI.h" #include "versionAPI.h"
#include "string_utils.h"
#include <array> #include <array>
#include <cstdlib> #include <cstdlib>
@ -26,45 +26,12 @@
slsReceiverTCPIPInterface::~slsReceiverTCPIPInterface() { slsReceiverTCPIPInterface::~slsReceiverTCPIPInterface() {
stop(); stop();
delete mySock;
mySock=nullptr;
delete interface;
delete receiver;
} }
slsReceiverTCPIPInterface::slsReceiverTCPIPInterface(int pn): slsReceiverTCPIPInterface::slsReceiverTCPIPInterface(int pn):
myDetectorType(GOTTHARD), myDetectorType(GOTTHARD),
receiver(nullptr), portNumber(pn > 0 ? pn : DEFAULT_PORTNO + 2)
ret(OK),
fnum(-1),
lockStatus(0),
killTCPServerThread(0),
tcpThreadCreated(false),
portNumber(DEFAULT_PORTNO+2),
mySock(nullptr),
interface(nullptr)
{ {
//***callback parameters***
startAcquisitionCallBack = nullptr;
pStartAcquisition = nullptr;
acquisitionFinishedCallBack = nullptr;
pAcquisitionFinished = nullptr;
rawDataReadyCallBack = nullptr;
rawDataModifyReadyCallBack = nullptr;
pRawDataReady = nullptr;
// create socket
portNumber = (pn > 0 ? pn : DEFAULT_PORTNO + 2);
// MySocketTCP* m = new MySocketTCP(portNumber);
// mySock = m;
// interface = new ServerInterface(mySock, -1, "Receiver");
//initialize variables
// strcpy(mySock->lastClientIP,"none");
// strcpy(mySock->thisClientIP,"none1");
memset(mess,0,sizeof(mess));
strcpy(mess,"dummy message");
function_table(); function_table();
} }
@ -86,7 +53,6 @@ void slsReceiverTCPIPInterface::stop(){
if (tcpThreadCreated) { if (tcpThreadCreated) {
FILE_LOG(logINFO) << "Shutting down TCP Socket on port " << portNumber; FILE_LOG(logINFO) << "Shutting down TCP Socket on port " << portNumber;
killTCPServerThread = 1; killTCPServerThread = 1;
// if(mySock) mySock->ShutDownSocket();
if(server) if(server)
server->shutDownSocket(); server->shutDownSocket();
FILE_LOG(logDEBUG) << "TCP Socket closed on port " << portNumber; FILE_LOG(logDEBUG) << "TCP Socket closed on port " << portNumber;
@ -134,30 +100,17 @@ void* slsReceiverTCPIPInterface::startTCPServerThread(void *this_pointer){
} }
void slsReceiverTCPIPInterface::startTCPServer() { void slsReceiverTCPIPInterface::startTCPServer() {
FILE_LOG(logINFOBLUE) << "Created [ TCP server Tid: " << syscall(SYS_gettid) FILE_LOG(logINFOBLUE) << "Created [ TCP server Tid: "
<< "]"; << syscall(SYS_gettid) << "]";
;
FILE_LOG(logINFO) << "SLS Receiver starting TCP Server on port " FILE_LOG(logINFO) << "SLS Receiver starting TCP Server on port "
<< portNumber << std::endl; << portNumber << std::endl;
int ret = OK; int ret = OK;
server = sls::make_unique<sls::ServerSocket>(portNumber); server = sls::make_unique<sls::ServerSocket>(portNumber);
while (true) { while (true) {
try { try {
std::cout << "<--------- hej\n";
auto socket = server->accept(); auto socket = server->accept();
std::cout << "<--------- hej2\n"; socket.setReceiveTimeout(10000);
socket.setTimeOut(1);
socket.setReceiveTimeout(1000);
std::cout << "<--------- hej3\n";
ret = decode_function(socket); ret = decode_function(socket);
std::cout << "<--------- hej4\n";
socket.close();
// if(mySock->Connect() >= 0){
// ret = decode_function();
// mySock->Disconnect();
// }
// if tcp command was to exit server // if tcp command was to exit server
if (ret == GOODBYE) { if (ret == GOODBYE) {
@ -165,8 +118,6 @@ void slsReceiverTCPIPInterface::startTCPServer() {
if (receiver) { if (receiver) {
receiver->shutDownUDPSockets(); receiver->shutDownUDPSockets();
} }
mySock->exitServer();
FILE_LOG(logINFOBLUE) FILE_LOG(logINFOBLUE)
<< "Exiting [ TCP server Tid: " << syscall(SYS_gettid) << "Exiting [ TCP server Tid: " << syscall(SYS_gettid)
<< "]"; << "]";
@ -254,43 +205,38 @@ int slsReceiverTCPIPInterface::function_table(){
return OK; return OK;
} }
int slsReceiverTCPIPInterface::decode_function(sls::ServerInterface2 &socket) { int slsReceiverTCPIPInterface::decode_function(sls::ServerInterface2 &socket) {
ret = FAIL; ret = FAIL;
std::cout << "<------ decode 1\n";
int n = socket.read(&fnum, sizeof(fnum)); int n = socket.read(&fnum, sizeof(fnum));
std::cout << "<------ decode 2\n";
if (n <= 0) { if (n <= 0) {
FILE_LOG(logDEBUG3) << "Could not read socket. " FILE_LOG(logDEBUG3)
"Received " << n << " bytes," << << "Could not read socket. Received " << n
"fnum:" << fnum << " " << " bytes, fnum:" << fnum << " ("
"(" << getFunctionNameFromEnum((enum detFuncs)fnum) << ")"; << getFunctionNameFromEnum((enum detFuncs)fnum) << ")";
return FAIL; return FAIL;
} } else {
else
FILE_LOG(logDEBUG3) << "Received " << n << " bytes"; FILE_LOG(logDEBUG3) << "Received " << n << " bytes";
}
if (fnum <= NUM_DET_FUNCTIONS || fnum >= NUM_REC_FUNCTIONS) { if (fnum <= NUM_DET_FUNCTIONS || fnum >= NUM_REC_FUNCTIONS) {
FILE_LOG(logERROR) << "Unknown function enum " << fnum; FILE_LOG(logERROR) << "Unknown function enum " << fnum;
ret = (this->M_nofunc)(socket); ret = (this->M_nofunc)(socket);
} else { } else {
FILE_LOG(logDEBUG1) << "calling function fnum: "<< fnum << " " FILE_LOG(logDEBUG1) << "calling function fnum: " << fnum << " ("
"(" << getFunctionNameFromEnum((enum detFuncs)fnum) << ") " << getFunctionNameFromEnum((enum detFuncs)fnum)
"located at " << flist[fnum]; << ") located at " << flist[fnum];
ret = (this->*flist[fnum])(socket); ret = (this->*flist[fnum])(socket);
if (ret == FAIL) { if (ret == FAIL) {
FILE_LOG(logDEBUG1) << "Failed to execute function = " << fnum << " (" FILE_LOG(logDEBUG1)
<< "Failed to execute function = " << fnum << " ("
<< getFunctionNameFromEnum((enum detFuncs)fnum) << ")"; << getFunctionNameFromEnum((enum detFuncs)fnum) << ")";
} else FILE_LOG(logDEBUG1) << "Function " << } else
getFunctionNameFromEnum((enum detFuncs)fnum) << " executed OK"; FILE_LOG(logDEBUG1)
<< "Function " << getFunctionNameFromEnum((enum detFuncs)fnum)
<< " executed OK";
} }
return ret; return ret;
} }
void slsReceiverTCPIPInterface::functionNotImplemented() { void slsReceiverTCPIPInterface::functionNotImplemented() {
ret = FAIL; ret = FAIL;
sprintf(mess, "Function (%s) is not implemented for this detector\n", sprintf(mess, "Function (%s) is not implemented for this detector\n",
@ -322,9 +268,6 @@ int slsReceiverTCPIPInterface::M_nofunc(sls::ServerInterface2 &socket){
ret = FAIL; ret = FAIL;
memset(mess, 0, sizeof(mess)); memset(mess, 0, sizeof(mess));
// to receive any arguments
socket.setReceiveTimeout(500);
int n = 1; int n = 1;
while (n > 0) while (n > 0)
n = socket.read(mess, MAX_STR_LENGTH); n = socket.read(mess, MAX_STR_LENGTH);
@ -428,8 +371,9 @@ int slsReceiverTCPIPInterface::lock_receiver(sls::ServerInterface2 &socket) {
int slsReceiverTCPIPInterface::get_last_client_ip(sls::ServerInterface2 &socket) { int slsReceiverTCPIPInterface::get_last_client_ip(sls::ServerInterface2 &socket) {
ret = OK; ret = OK;
memset(mess, 0, sizeof(mess)); memset(mess, 0, sizeof(mess));
auto ip = server->getLastClient().str(); char ip[INET_ADDRSTRLEN]{};
return socket.sendResult(true, ret, &ip.front(), ip.length()+1, nullptr); sls::strcpy_safe(ip, server->getLastClient().str().c_str());
return socket.sendResult(true, ret, &ip, sizeof(ip));
} }
@ -438,30 +382,23 @@ int slsReceiverTCPIPInterface::set_port(sls::ServerInterface2 &socket) {
ret = OK; ret = OK;
memset(mess, 0, sizeof(mess)); memset(mess, 0, sizeof(mess));
int p_number = -1; int p_number = -1;
MySocketTCP* mySocket = nullptr;
char oldLastClientIP[INET_ADDRSTRLEN] = {0};
// get args, return if socket crashed
if (socket.receiveArg(ret, mess, &p_number, sizeof(p_number)) == FAIL) if (socket.receiveArg(ret, mess, &p_number, sizeof(p_number)) == FAIL)
return FAIL; return FAIL;
// verify if receiver is unlocked
if (VerifyLock(ret, mess) == OK) { if (VerifyLock(ret, mess) == OK) {
// port number too low
if (p_number < 1024) { if (p_number < 1024) {
ret = FAIL; ret = FAIL;
sprintf(mess,"Port Number (%d) too low\n", p_number); sprintf(mess,"Port Number (%d) too low\n", p_number);
FILE_LOG(logERROR) << mess; FILE_LOG(logERROR) << mess;
} else { } else {
FILE_LOG(logINFO) << "set port to " << p_number <<std::endl; FILE_LOG(logINFO) << "set port to " << p_number <<std::endl;
strcpy(oldLastClientIP, mySock->lastClientIP);
// create new socket
try { try {
mySocket = new MySocketTCP(p_number); auto new_server = sls::make_unique<sls::ServerSocket>(p_number);
strcpy(mySock->lastClientIP,oldLastClientIP); new_server->setLockedBy(server->getLockedBy());
new_server->setLastClient(server->getLastClient());
server = std::move(new_server);
} catch(SocketError &e) { } catch(SocketError &e) {
ret = FAIL; ret = FAIL;
// same socket, could not bind port
sprintf(mess, "%s", e.what()); sprintf(mess, "%s", e.what());
FILE_LOG(logERROR) << mess; FILE_LOG(logERROR) << mess;
} catch (...) { } catch (...) {
@ -473,13 +410,6 @@ int slsReceiverTCPIPInterface::set_port(sls::ServerInterface2 &socket) {
} }
socket.sendResult(true, ret, &p_number,sizeof(p_number), mess); socket.sendResult(true, ret, &p_number,sizeof(p_number), mess);
// delete old socket
if(ret != FAIL){
mySock->Disconnect();
delete mySock;
mySock = mySocket;
interface->SetSocket(mySock);
}
return ret; return ret;
} }
@ -505,10 +435,11 @@ int slsReceiverTCPIPInterface::update_client(sls::ServerInterface2 &socket) {
int slsReceiverTCPIPInterface::send_update(sls::ServerInterface2 &socket) { int slsReceiverTCPIPInterface::send_update(sls::ServerInterface2 &socket) {
int n = 0; int n = 0;
int i32 = -1; int i32 = -1;
char cstring[MAX_STR_LENGTH] = {0}; char cstring[MAX_STR_LENGTH]{};
char ip[INET_ADDRSTRLEN]{};
n += socket.sendData(mySock->lastClientIP,sizeof(mySock->lastClientIP)); sls::strcpy_safe(ip, server->getLastClient().str().c_str());
n += socket.sendData(ip,sizeof(ip));
// filepath // filepath
strcpy(cstring, receiver->getFilePath().c_str()); strcpy(cstring, receiver->getFilePath().c_str());
@ -600,9 +531,6 @@ int slsReceiverTCPIPInterface::send_update(sls::ServerInterface2 &socket) {
i32=receiver->getDbitOffset(); i32=receiver->getDbitOffset();
n += socket.sendData(&i32, sizeof(i32)); n += socket.sendData(&i32, sizeof(i32));
// if (!lockStatus)
// strcpy(mySock->lastClientIP, mySock->thisClientIP);
return OK; return OK;
} }
@ -668,10 +596,6 @@ int slsReceiverTCPIPInterface::set_detector_type(sls::ServerInterface2 &socket){
receiver->registerCallBackRawDataReady(rawDataReadyCallBack,pRawDataReady); receiver->registerCallBackRawDataReady(rawDataReadyCallBack,pRawDataReady);
if(rawDataModifyReadyCallBack) if(rawDataModifyReadyCallBack)
receiver->registerCallBackRawDataModifyReady(rawDataModifyReadyCallBack,pRawDataReady); receiver->registerCallBackRawDataModifyReady(rawDataModifyReadyCallBack,pRawDataReady);
// // client has started updating receiver, update ip
// if (!lockStatus)
// strcpy(mySock->lastClientIP, mySock->thisClientIP);
} }
} }
@ -715,27 +639,30 @@ int slsReceiverTCPIPInterface::set_detector_hostname(sls::ServerInterface2 &sock
return socket.sendResult(true, ret, retval, MAX_STR_LENGTH, mess); return socket.sendResult(true, ret, retval, MAX_STR_LENGTH, mess);
} }
int slsReceiverTCPIPInterface::LogSocketCrash(){
FILE_LOG(logERROR) << "Reading from socket failed. Possible socket crash";
return FAIL;
}
void slsReceiverTCPIPInterface::NullObjectError(int& ret, char* mess){
ret=FAIL;
strcpy(mess,"Receiver not set up. Please use rx_hostname first.\n");
FILE_LOG(logERROR) << mess;
}
int slsReceiverTCPIPInterface::set_roi(sls::ServerInterface2 &socket) { int slsReceiverTCPIPInterface::set_roi(sls::ServerInterface2 &socket) {
ret = OK; ret = OK;
memset(mess, 0, sizeof(mess)); memset(mess, 0, sizeof(mess));
static_assert(sizeof(ROI) == 4*sizeof(int), "ROI not packed");
int narg = -1; int narg = -1;
std::vector <ROI> arg; socket.read(&narg,sizeof(narg));
// receive arguments std::vector <ROI> arg;
if (mySock->ReceiveDataOnly(&narg,sizeof(narg)) < 0 )
return interface->Server_SocketCrash();
for (int iloop = 0; iloop < narg; ++iloop) { for (int iloop = 0; iloop < narg; ++iloop) {
ROI temp; ROI temp{};
if ( mySock->ReceiveDataOnly(&temp.xmin, sizeof(int)) < 0 ) socket.read(&temp, sizeof(temp));
return interface->Server_SocketCrash();
if ( mySock->ReceiveDataOnly(&temp.xmax, sizeof(int)) < 0 )
return interface->Server_SocketCrash();
if ( mySock->ReceiveDataOnly(&temp.ymin, sizeof(int)) < 0 )
return interface->Server_SocketCrash();
if ( mySock->ReceiveDataOnly(&temp.ymax, sizeof(int)) < 0 )
return interface->Server_SocketCrash();
arg.push_back(temp); arg.push_back(temp);
} }
FILE_LOG(logDEBUG1) << "Set ROI narg: " << narg; FILE_LOG(logDEBUG1) << "Set ROI narg: " << narg;
@ -750,14 +677,11 @@ int slsReceiverTCPIPInterface::set_roi(sls::ServerInterface2 &socket) {
// base object not null // base object not null
else if (receiver == nullptr) else if (receiver == nullptr)
interface->Server_NullObjectError(ret, mess); NullObjectError(ret, mess);
else { else {
// only set
// verify if receiver is unlocked and idle
if (VerifyLockAndIdle(ret, mess, fnum) == OK) if (VerifyLockAndIdle(ret, mess, fnum) == OK)
ret = receiver->setROI(arg); ret = receiver->setROI(arg);
} }
arg.clear();
return socket.sendResult(true, ret, nullptr, 0, mess); return socket.sendResult(true, ret, nullptr, 0, mess);
} }
@ -766,8 +690,8 @@ int slsReceiverTCPIPInterface::set_roi(sls::ServerInterface2 &socket) {
int slsReceiverTCPIPInterface::setup_udp(sls::ServerInterface2 &socket){ int slsReceiverTCPIPInterface::setup_udp(sls::ServerInterface2 &socket){
ret = OK; ret = OK;
memset(mess, 0, sizeof(mess)); memset(mess, 0, sizeof(mess));
char args[6][MAX_STR_LENGTH] = {{""}, {""}, {""}, {""}, {""}, {""}}; char args[6][MAX_STR_LENGTH]{};
char retvals[2][MAX_STR_LENGTH] = {{""}, {""}}; char retvals[2][MAX_STR_LENGTH]{};
// get args, return if socket crashed, ret is fail if receiver is not null // get args, return if socket crashed, ret is fail if receiver is not null
if (socket.receiveArg(ret, mess, args, sizeof(args)) == FAIL) if (socket.receiveArg(ret, mess, args, sizeof(args)) == FAIL)
@ -2094,7 +2018,6 @@ int slsReceiverTCPIPInterface::set_deactivated_padding_enable(sls::ServerInterfa
else if (ret == OK) { else if (ret == OK) {
// set // set
if (enable >= 0) { if (enable >= 0) {
// verify if receiver is unlocked and idle
if (VerifyLockAndIdle(ret, mess, fnum) == OK) { if (VerifyLockAndIdle(ret, mess, fnum) == OK) {
FILE_LOG(logDEBUG1) << "Setting deactivated padding enable: " << enable; FILE_LOG(logDEBUG1) << "Setting deactivated padding enable: " << enable;
receiver->setDeactivatedPadding(enable > 0 ? true : false); receiver->setDeactivatedPadding(enable > 0 ? true : false);
@ -2154,14 +2077,10 @@ int slsReceiverTCPIPInterface::set_adc_mask(sls::ServerInterface2 &socket) {
// base object not null // base object not null
else if (ret == OK) { else if (ret == OK) {
// set
// verify if receiver is unlocked and idle
if (VerifyLockAndIdle(ret, mess, fnum) == OK) { if (VerifyLockAndIdle(ret, mess, fnum) == OK) {
FILE_LOG(logDEBUG1) << "Setting ADC enable mask: " << arg; FILE_LOG(logDEBUG1) << "Setting ADC enable mask: " << arg;
receiver->setADCEnableMask(arg); receiver->setADCEnableMask(arg);
} }
// get
retval = receiver->getADCEnableMask(); retval = receiver->getADCEnableMask();
if (ret == OK && retval != arg) { if (ret == OK && retval != arg) {
ret = FAIL; ret = FAIL;
@ -2185,7 +2104,7 @@ int slsReceiverTCPIPInterface::set_dbit_list(sls::ServerInterface2 &socket) {
FILE_LOG(logDEBUG1) << it << " "; FILE_LOG(logDEBUG1) << it << " ";
} }
FILE_LOG(logDEBUG1) << "\n"; FILE_LOG(logDEBUG1) << "\n";
if (interface->Server_VerifyLockAndIdle(ret, mess, lockStatus, receiver->getStatus(), fnum) == OK) { if (VerifyLockAndIdle(ret, mess, fnum) == OK) {
if (args.size() > 64) { if (args.size() > 64) {
ret = FAIL; ret = FAIL;
sprintf(mess, "Could not set dbit list as size is > 64\n"); sprintf(mess, "Could not set dbit list as size is > 64\n");
@ -2193,8 +2112,6 @@ int slsReceiverTCPIPInterface::set_dbit_list(sls::ServerInterface2 &socket) {
} else } else
receiver->setDbitList(args); receiver->setDbitList(args);
} }
} }
return socket.sendResult(true, ret, nullptr, 0, mess); return socket.sendResult(true, ret, nullptr, 0, mess);
} }
@ -2209,7 +2126,6 @@ int slsReceiverTCPIPInterface::get_dbit_list(sls::ServerInterface2 &socket) {
// base object not null // base object not null
if (ret == OK) { if (ret == OK) {
// get
retval = receiver->getDbitList(); retval = receiver->getDbitList();
FILE_LOG(logDEBUG1) << "Dbit list size retval:" << retval.size(); FILE_LOG(logDEBUG1) << "Dbit list size retval:" << retval.size();
} }
@ -2229,15 +2145,12 @@ int slsReceiverTCPIPInterface::set_dbit_offset(sls::ServerInterface2 &socket) {
// base object not null // base object not null
else if (ret == OK) { else if (ret == OK) {
// set
if (arg >= 0) { if (arg >= 0) {
// verify if receiver is unlocked and idle
if (VerifyLockAndIdle(ret, mess, fnum) == OK) { if (VerifyLockAndIdle(ret, mess, fnum) == OK) {
FILE_LOG(logDEBUG1) << "Setting Dbit offset: " << arg; FILE_LOG(logDEBUG1) << "Setting Dbit offset: " << arg;
receiver->setDbitOffset(arg); receiver->setDbitOffset(arg);
} }
} }
// get
retval = receiver->getDbitOffset(); retval = receiver->getDbitOffset();
validate(arg, retval, std::string("set dbit offset"), DEC); validate(arg, retval, std::string("set dbit offset"), DEC);
FILE_LOG(logDEBUG1) << "Dbit offset retval: " << retval; FILE_LOG(logDEBUG1) << "Dbit offset retval: " << retval;

View File

@ -20,7 +20,7 @@ class DataSocket {
} }
size_t sendData(const void *buffer, size_t size); size_t sendData(const void *buffer, size_t size);
size_t receiveData(void *buffer, size_t size); size_t receiveData(void *buffer, size_t size);
size_t read(void *buffer, size_t size); ssize_t read(void *buffer, size_t size);
int setTimeOut(int t_seconds); int setTimeOut(int t_seconds);
int setReceiveTimeout(int us); int setReceiveTimeout(int us);
void close(); void close();

View File

@ -19,6 +19,7 @@ class ServerSocket : public DataSocket {
constexpr IpAddr getThisClient() noexcept { return thisClient; } constexpr IpAddr getThisClient() noexcept { return thisClient; }
constexpr IpAddr getLockedBy() noexcept { return lockedBy; } constexpr IpAddr getLockedBy() noexcept { return lockedBy; }
void setLockedBy(IpAddr addr){ lockedBy = addr; } void setLockedBy(IpAddr addr){ lockedBy = addr; }
void setLastClient(IpAddr addr){ lastClient = addr; }
int getPort() const; int getPort() const;
void SendResult(int &ret, void *retval, int retvalSize, char *mess); void SendResult(int &ret, void *retval, int retvalSize, char *mess);
@ -27,7 +28,6 @@ class ServerSocket : public DataSocket {
IpAddr lastClient; IpAddr lastClient;
IpAddr lockedBy; IpAddr lockedBy;
int serverPort; int serverPort;
// char lastClient_[INET_ADDRSTRLEN]{};
}; };
}; // namespace sls }; // namespace sls

View File

@ -17,8 +17,8 @@
#endif #endif
#ifndef FILELOG_MAX_LEVEL #ifndef FILELOG_MAX_LEVEL
// #define FILELOG_MAX_LEVEL logINFO #define FILELOG_MAX_LEVEL logINFO
#define FILELOG_MAX_LEVEL logDEBUG5 // #define FILELOG_MAX_LEVEL logDEBUG5
#endif #endif

View File

@ -50,7 +50,7 @@ size_t DataSocket::receiveData(void *buffer, size_t size) {
return dataRead; return dataRead;
} }
size_t DataSocket::read(void *buffer, size_t size){ ssize_t DataSocket::read(void *buffer, size_t size){
return ::read(getSocketId(), reinterpret_cast<char *>(buffer), size); return ::read(getSocketId(), reinterpret_cast<char *>(buffer), size);
} }