mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 22:40:02 +02:00
fix for datasocket and clientsocket, to be reviewed.
clientsocket: to print origin of error (rx/det) for tcp socket failure datasocket: usleep only for send for rhel7, not for fedora.. when fpath /, fwrite 1, rx_start fails without sending exception
This commit is contained in:
parent
293fda0c7a
commit
c67b7aab4d
@ -638,7 +638,7 @@ int get_server_version(int file_des) {
|
|||||||
int64_t retval = -1;
|
int64_t retval = -1;
|
||||||
retval = getServerVersion();
|
retval = getServerVersion();
|
||||||
LOG(logDEBUG1,
|
LOG(logDEBUG1,
|
||||||
("firmware version retval: 0x%llx\n", (long long int)retval));
|
("server version retval: 0x%llx\n", (long long int)retval));
|
||||||
return Server_SendResult(file_des, INT64, &retval, sizeof(retval));
|
return Server_SendResult(file_des, INT64, &retval, sizeof(retval));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -648,7 +648,7 @@ int get_serial_number(int file_des) {
|
|||||||
int64_t retval = -1;
|
int64_t retval = -1;
|
||||||
retval = getDetectorNumber();
|
retval = getDetectorNumber();
|
||||||
LOG(logDEBUG1,
|
LOG(logDEBUG1,
|
||||||
("firmware version retval: 0x%llx\n", (long long int)retval));
|
("detector number retval: 0x%llx\n", (long long int)retval));
|
||||||
return Server_SendResult(file_des, INT64, &retval, sizeof(retval));
|
return Server_SendResult(file_des, INT64, &retval, sizeof(retval));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,6 +72,22 @@ void ClientSocket::readReply(int &ret, void *retval, size_t retval_size) {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
Receive(&ret, sizeof(ret));
|
Receive(&ret, sizeof(ret));
|
||||||
|
if (ret == slsDetectorDefs::FAIL) {
|
||||||
|
char mess[MAX_STR_LENGTH]{};
|
||||||
|
// get error message
|
||||||
|
Receive(mess, sizeof(mess));
|
||||||
|
// Do we need to know hostname here?
|
||||||
|
// In that case save it???
|
||||||
|
if (socketType == "Receiver") {
|
||||||
|
throw ReceiverError("Receiver returned: " + std::string(mess));
|
||||||
|
} else if (socketType == "Detector") {
|
||||||
|
throw DetectorError("Detector returned: " + std::string(mess));
|
||||||
|
} else {
|
||||||
|
throw GuiError(mess);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// get retval
|
||||||
|
Receive(retval, retval_size);
|
||||||
}
|
}
|
||||||
// debugging
|
// debugging
|
||||||
catch (sls::SocketError &e) {
|
catch (sls::SocketError &e) {
|
||||||
@ -83,22 +99,6 @@ void ClientSocket::readReply(int &ret, void *retval, size_t retval_size) {
|
|||||||
throw GuiError(e.what());
|
throw GuiError(e.what());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ret == slsDetectorDefs::FAIL) {
|
|
||||||
char mess[MAX_STR_LENGTH]{};
|
|
||||||
// get error message
|
|
||||||
Receive(mess, sizeof(mess));
|
|
||||||
// Do we need to know hostname here?
|
|
||||||
// In that case save it???
|
|
||||||
if (socketType == "Receiver") {
|
|
||||||
throw ReceiverError("Receiver returned: " + std::string(mess));
|
|
||||||
} else if (socketType == "Detector") {
|
|
||||||
throw DetectorError("Detector returned: " + std::string(mess));
|
|
||||||
} else {
|
|
||||||
throw GuiError(mess);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// get retval
|
|
||||||
Receive(retval, retval_size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}; // namespace sls
|
}; // namespace sls
|
||||||
|
@ -68,6 +68,8 @@ int DataSocket::Send(const void *buffer, size_t size) {
|
|||||||
int data_size = static_cast<int>(size); // signed size
|
int data_size = static_cast<int>(size); // signed size
|
||||||
while (bytes_sent < (data_size)) {
|
while (bytes_sent < (data_size)) {
|
||||||
auto this_send = ::write(getSocketId(), buffer, size);
|
auto this_send = ::write(getSocketId(), buffer, size);
|
||||||
|
usleep(0); // TODO: fix for rhel7 (not fedora) sending 0 chars for mess
|
||||||
|
// (rx_start with fwrite 1 and fpath /)
|
||||||
if (this_send <= 0)
|
if (this_send <= 0)
|
||||||
break;
|
break;
|
||||||
bytes_sent += this_send;
|
bytes_sent += this_send;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user