mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-13 05:17:13 +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:
@ -72,6 +72,22 @@ void ClientSocket::readReply(int &ret, void *retval, size_t retval_size) {
|
||||
|
||||
try {
|
||||
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
|
||||
catch (sls::SocketError &e) {
|
||||
@ -83,22 +99,6 @@ void ClientSocket::readReply(int &ret, void *retval, size_t retval_size) {
|
||||
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
|
||||
|
@ -68,6 +68,8 @@ int DataSocket::Send(const void *buffer, size_t size) {
|
||||
int data_size = static_cast<int>(size); // signed size
|
||||
while (bytes_sent < (data_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)
|
||||
break;
|
||||
bytes_sent += this_send;
|
||||
|
Reference in New Issue
Block a user