mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-26 16:20:03 +02:00
receiver bug fixaffecting Jungfrau receivers as root (optlen size as int), but setting buffer size is uint32_t size. setting it to uint64_t
This commit is contained in:
parent
d7ce5fedfd
commit
a1a95ebb20
@ -4959,6 +4959,7 @@ uint32_t slsDetector::clearBit(uint32_t addr, int n) {
|
|||||||
|
|
||||||
string slsDetector::setNetworkParameter(networkParameter index, string value) {
|
string slsDetector::setNetworkParameter(networkParameter index, string value) {
|
||||||
int i;
|
int i;
|
||||||
|
uint64_t i64 = -1;
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case DETECTOR_MAC:
|
case DETECTOR_MAC:
|
||||||
return setDetectorMAC(value);
|
return setDetectorMAC(value);
|
||||||
@ -5000,8 +5001,8 @@ string slsDetector::setNetworkParameter(networkParameter index, string value) {
|
|||||||
case ADDITIONAL_JSON_HEADER:
|
case ADDITIONAL_JSON_HEADER:
|
||||||
return setAdditionalJsonHeader(value);
|
return setAdditionalJsonHeader(value);
|
||||||
case RECEIVER_UDP_SCKT_BUF_SIZE:
|
case RECEIVER_UDP_SCKT_BUF_SIZE:
|
||||||
sscanf(value.c_str(),"%d",&i);
|
sscanf(value.c_str(),"%ld",&i64);
|
||||||
setReceiverUDPSocketBufferSize(i);
|
setReceiverUDPSocketBufferSize(i64);
|
||||||
return getReceiverUDPSocketBufferSize();
|
return getReceiverUDPSocketBufferSize();
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -5109,7 +5110,7 @@ string slsDetector::getReceiverRealUDPSocketBufferSize() {
|
|||||||
|
|
||||||
int fnum=F_RECEIVER_REAL_UDP_SOCK_BUF_SIZE;
|
int fnum=F_RECEIVER_REAL_UDP_SOCK_BUF_SIZE;
|
||||||
int ret = FAIL;
|
int ret = FAIL;
|
||||||
int retval = -1;
|
int64_t retval = -1;
|
||||||
|
|
||||||
if(thisDetector->receiverOnlineFlag == ONLINE_FLAG){
|
if(thisDetector->receiverOnlineFlag == ONLINE_FLAG){
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
@ -5591,12 +5592,12 @@ string slsDetector::setAdditionalJsonHeader(string jsonheader) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
string slsDetector::setReceiverUDPSocketBufferSize(int udpsockbufsize) {
|
string slsDetector::setReceiverUDPSocketBufferSize(uint64_t udpsockbufsize) {
|
||||||
|
|
||||||
int fnum=F_RECEIVER_UDP_SOCK_BUF_SIZE;
|
int fnum=F_RECEIVER_UDP_SOCK_BUF_SIZE;
|
||||||
int ret = FAIL;
|
int ret = FAIL;
|
||||||
int retval = -1;
|
int64_t retval = -1;
|
||||||
int arg = udpsockbufsize;
|
int64_t arg = udpsockbufsize;
|
||||||
|
|
||||||
if(thisDetector->receiverOnlineFlag == ONLINE_FLAG){
|
if(thisDetector->receiverOnlineFlag == ONLINE_FLAG){
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
|
@ -2422,7 +2422,7 @@ private:
|
|||||||
* @param udpsockbufsize additional json header
|
* @param udpsockbufsize additional json header
|
||||||
* @returns receiver udp socket buffer size
|
* @returns receiver udp socket buffer size
|
||||||
*/
|
*/
|
||||||
std::string setReceiverUDPSocketBufferSize(int udpsockbufsize=-1);
|
std::string setReceiverUDPSocketBufferSize(uint64_t udpsockbufsize=-1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the transmission delay for left, right or entire frame
|
* Sets the transmission delay for left, right or entire frame
|
||||||
|
@ -4040,7 +4040,8 @@ string slsDetectorCommand::cmdNetworkParameter(int narg, char *args[], int actio
|
|||||||
} else if (cmd=="rx_udpsocksize") {
|
} else if (cmd=="rx_udpsocksize") {
|
||||||
t=RECEIVER_UDP_SCKT_BUF_SIZE;
|
t=RECEIVER_UDP_SCKT_BUF_SIZE;
|
||||||
if (action==PUT_ACTION){
|
if (action==PUT_ACTION){
|
||||||
if (!(sscanf(args[1],"%d",&i)))
|
uint64_t ival = -1;
|
||||||
|
if (!(sscanf(args[1],"%ld",&i)))
|
||||||
return ("cannot parse argument") + string(args[1]);
|
return ("cannot parse argument") + string(args[1]);
|
||||||
}
|
}
|
||||||
} else if (cmd=="rx_realudpsocksize") {
|
} else if (cmd=="rx_realudpsocksize") {
|
||||||
|
@ -39,7 +39,7 @@ class Listener : private virtual slsReceiverDefs, public ThreadObject {
|
|||||||
*/
|
*/
|
||||||
Listener(int ind, detectorType dtype, Fifo*& f, runStatus* s,
|
Listener(int ind, detectorType dtype, Fifo*& f, runStatus* s,
|
||||||
uint32_t* portno, char* e, uint64_t* nf, uint32_t* dr,
|
uint32_t* portno, char* e, uint64_t* nf, uint32_t* dr,
|
||||||
uint32_t* us, uint32_t* as, uint32_t* fpf,
|
uint64_t* us, uint64_t* as, uint32_t* fpf,
|
||||||
frameDiscardPolicy* fdp, bool* act, bool* depaden, bool* sm);
|
frameDiscardPolicy* fdp, bool* act, bool* depaden, bool* sm);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -138,7 +138,7 @@ class Listener : private virtual slsReceiverDefs, public ThreadObject {
|
|||||||
* @param s UDP socket buffer size to be set
|
* @param s UDP socket buffer size to be set
|
||||||
* @return OK or FAIL of dummy socket creation
|
* @return OK or FAIL of dummy socket creation
|
||||||
*/
|
*/
|
||||||
int CreateDummySocketForUDPSocketBufferSize(uint32_t s);
|
int CreateDummySocketForUDPSocketBufferSize(uint64_t s);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set hard coded (calculated but not from detector) row and column
|
* Set hard coded (calculated but not from detector) row and column
|
||||||
@ -231,10 +231,10 @@ class Listener : private virtual slsReceiverDefs, public ThreadObject {
|
|||||||
uint32_t* dynamicRange;
|
uint32_t* dynamicRange;
|
||||||
|
|
||||||
/** UDP Socket Buffer Size */
|
/** UDP Socket Buffer Size */
|
||||||
uint32_t* udpSocketBufferSize;
|
uint64_t* udpSocketBufferSize;
|
||||||
|
|
||||||
/** actual UDP Socket Buffer Size (double due to kernel bookkeeping) */
|
/** actual UDP Socket Buffer Size (double due to kernel bookkeeping) */
|
||||||
uint32_t* actualUDPSocketBufferSize;
|
uint64_t* actualUDPSocketBufferSize;
|
||||||
|
|
||||||
/** frames per file */
|
/** frames per file */
|
||||||
uint32_t* framesPerFile;
|
uint32_t* framesPerFile;
|
||||||
|
@ -313,14 +313,14 @@ class UDPBaseImplementation : protected virtual slsReceiverDefs, public UDPInter
|
|||||||
* Get UDP Socket Buffer Size
|
* Get UDP Socket Buffer Size
|
||||||
* @return UDP Socket Buffer Size
|
* @return UDP Socket Buffer Size
|
||||||
*/
|
*/
|
||||||
uint32_t getUDPSocketBufferSize() const;
|
uint64_t getUDPSocketBufferSize() const;
|
||||||
|
|
||||||
|
|
||||||
/** (not saved in client shared memory)
|
/** (not saved in client shared memory)
|
||||||
* Get actual UDP Socket Buffer Size
|
* Get actual UDP Socket Buffer Size
|
||||||
* @return actual UDP Socket Buffer Size
|
* @return actual UDP Socket Buffer Size
|
||||||
*/
|
*/
|
||||||
uint32_t getActualUDPSocketBufferSize() const;
|
uint64_t getActualUDPSocketBufferSize() const;
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Setters ***************************************************************
|
* Setters ***************************************************************
|
||||||
@ -651,7 +651,7 @@ class UDPBaseImplementation : protected virtual slsReceiverDefs, public UDPInter
|
|||||||
* @param s UDP Socket Buffer Size
|
* @param s UDP Socket Buffer Size
|
||||||
* @return OK or FAIL if dummy socket could be created
|
* @return OK or FAIL if dummy socket could be created
|
||||||
*/
|
*/
|
||||||
int setUDPSocketBufferSize(const uint32_t s);
|
int setUDPSocketBufferSize(const uint64_t s);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Restream stop dummy packet from receiver
|
* Restream stop dummy packet from receiver
|
||||||
@ -760,9 +760,9 @@ class UDPBaseImplementation : protected virtual slsReceiverDefs, public UDPInter
|
|||||||
/** Server UDP Port Number*/
|
/** Server UDP Port Number*/
|
||||||
uint32_t udpPortNum[MAX_NUMBER_OF_LISTENING_THREADS];
|
uint32_t udpPortNum[MAX_NUMBER_OF_LISTENING_THREADS];
|
||||||
/** udp socket buffer size */
|
/** udp socket buffer size */
|
||||||
uint32_t udpSocketBufferSize;
|
uint64_t udpSocketBufferSize;
|
||||||
/** actual UDP Socket Buffer Size (halved due to kernel bookkeeping) */
|
/** actual UDP Socket Buffer Size (halved due to kernel bookkeeping) */
|
||||||
uint32_t actualUDPSocketBufferSize;
|
uint64_t actualUDPSocketBufferSize;
|
||||||
|
|
||||||
//***file parameters***
|
//***file parameters***
|
||||||
/** File format */
|
/** File format */
|
||||||
|
@ -404,13 +404,13 @@ class UDPInterface {
|
|||||||
* Get UDP Socket Buffer Size
|
* Get UDP Socket Buffer Size
|
||||||
* @return UDP Socket Buffer Size
|
* @return UDP Socket Buffer Size
|
||||||
*/
|
*/
|
||||||
virtual uint32_t getUDPSocketBufferSize() const = 0;
|
virtual uint64_t getUDPSocketBufferSize() const = 0;
|
||||||
|
|
||||||
/** (not saved in client shared memory)
|
/** (not saved in client shared memory)
|
||||||
* Get actual UDP Socket Buffer Size
|
* Get actual UDP Socket Buffer Size
|
||||||
* @return actual UDP Socket Buffer Size
|
* @return actual UDP Socket Buffer Size
|
||||||
*/
|
*/
|
||||||
virtual uint32_t getActualUDPSocketBufferSize() const = 0;
|
virtual uint64_t getActualUDPSocketBufferSize() const = 0;
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Setters ***************************************************************
|
* Setters ***************************************************************
|
||||||
@ -743,7 +743,7 @@ class UDPInterface {
|
|||||||
* @param s UDP Socket Buffer Size
|
* @param s UDP Socket Buffer Size
|
||||||
* @return OK or FAIL if dummy socket could be created
|
* @return OK or FAIL if dummy socket could be created
|
||||||
*/
|
*/
|
||||||
virtual int setUDPSocketBufferSize(const uint32_t s) = 0;
|
virtual int setUDPSocketBufferSize(const uint64_t s) = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Restream stop dummy packet from receiver
|
* Restream stop dummy packet from receiver
|
||||||
|
@ -184,7 +184,7 @@ class UDPStandardImplementation: private virtual slsReceiverDefs, public UDPBase
|
|||||||
* @param s UDP Socket Buffer Size
|
* @param s UDP Socket Buffer Size
|
||||||
* @return OK or FAIL if dummy socket could be created
|
* @return OK or FAIL if dummy socket could be created
|
||||||
*/
|
*/
|
||||||
int setUDPSocketBufferSize(const uint32_t s);
|
int setUDPSocketBufferSize(const uint64_t s);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restream stop dummy packet from receiver
|
* Restream stop dummy packet from receiver
|
||||||
|
@ -20,7 +20,7 @@ const std::string Listener::TypeName = "Listener";
|
|||||||
|
|
||||||
Listener::Listener(int ind, detectorType dtype, Fifo*& f, runStatus* s,
|
Listener::Listener(int ind, detectorType dtype, Fifo*& f, runStatus* s,
|
||||||
uint32_t* portno, char* e, uint64_t* nf, uint32_t* dr,
|
uint32_t* portno, char* e, uint64_t* nf, uint32_t* dr,
|
||||||
uint32_t* us, uint32_t* as, uint32_t* fpf,
|
uint64_t* us, uint64_t* as, uint32_t* fpf,
|
||||||
frameDiscardPolicy* fdp, bool* act, bool* depaden, bool* sm) :
|
frameDiscardPolicy* fdp, bool* act, bool* depaden, bool* sm) :
|
||||||
ThreadObject(ind),
|
ThreadObject(ind),
|
||||||
runningFlag(0),
|
runningFlag(0),
|
||||||
@ -242,7 +242,7 @@ void Listener::ShutDownUDPSocket() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Listener::CreateDummySocketForUDPSocketBufferSize(uint32_t s) {
|
int Listener::CreateDummySocketForUDPSocketBufferSize(uint64_t s) {
|
||||||
FILE_LOG(logINFO) << "Testing UDP Socket Buffer size with test port " << *udpPortNumber;
|
FILE_LOG(logINFO) << "Testing UDP Socket Buffer size with test port " << *udpPortNumber;
|
||||||
|
|
||||||
if (!(*activated)) {
|
if (!(*activated)) {
|
||||||
@ -250,7 +250,7 @@ int Listener::CreateDummySocketForUDPSocketBufferSize(uint32_t s) {
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t temp = *udpSocketBufferSize;
|
uint64_t temp = *udpSocketBufferSize;
|
||||||
*udpSocketBufferSize = s;
|
*udpSocketBufferSize = s;
|
||||||
|
|
||||||
//if eth is mistaken with ip address
|
//if eth is mistaken with ip address
|
||||||
|
@ -356,12 +356,12 @@ char *UDPBaseImplementation::getAdditionalJsonHeader() const{
|
|||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t UDPBaseImplementation::getUDPSocketBufferSize() const {
|
uint64_t UDPBaseImplementation::getUDPSocketBufferSize() const {
|
||||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||||
return udpSocketBufferSize;
|
return udpSocketBufferSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t UDPBaseImplementation::getActualUDPSocketBufferSize() const {
|
uint64_t UDPBaseImplementation::getActualUDPSocketBufferSize() const {
|
||||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||||
return actualUDPSocketBufferSize;
|
return actualUDPSocketBufferSize;
|
||||||
}
|
}
|
||||||
@ -786,7 +786,7 @@ void UDPBaseImplementation::setAdditionalJsonHeader(const char c[]){
|
|||||||
FILE_LOG(logINFO) << "Additional JSON Header: " << additionalJsonHeader;
|
FILE_LOG(logINFO) << "Additional JSON Header: " << additionalJsonHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
int UDPBaseImplementation::setUDPSocketBufferSize(const uint32_t s) {
|
int UDPBaseImplementation::setUDPSocketBufferSize(const uint64_t s) {
|
||||||
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
FILE_LOG(logDEBUG) << __AT__ << " starting";
|
||||||
|
|
||||||
udpSocketBufferSize = s;
|
udpSocketBufferSize = s;
|
||||||
|
@ -654,7 +654,7 @@ void UDPStandardImplementation::closeFiles() {
|
|||||||
dataProcessor[0]->EndofAcquisition(anycaught, maxIndexCaught);
|
dataProcessor[0]->EndofAcquisition(anycaught, maxIndexCaught);
|
||||||
}
|
}
|
||||||
|
|
||||||
int UDPStandardImplementation::setUDPSocketBufferSize(const uint32_t s) {
|
int UDPStandardImplementation::setUDPSocketBufferSize(const uint64_t s) {
|
||||||
if (listener.size())
|
if (listener.size())
|
||||||
return listener[0]->CreateDummySocketForUDPSocketBufferSize(s);
|
return listener[0]->CreateDummySocketForUDPSocketBufferSize(s);
|
||||||
return FAIL;
|
return FAIL;
|
||||||
|
@ -2626,8 +2626,8 @@ int slsReceiverTCPIPInterface::set_additional_json_header() {
|
|||||||
int slsReceiverTCPIPInterface::set_udp_socket_buffer_size() {
|
int slsReceiverTCPIPInterface::set_udp_socket_buffer_size() {
|
||||||
ret = OK;
|
ret = OK;
|
||||||
memset(mess, 0, sizeof(mess));
|
memset(mess, 0, sizeof(mess));
|
||||||
int index = -1;
|
uint64_t index = -1;
|
||||||
int retval = -1;
|
uint64_t retval = -1;
|
||||||
|
|
||||||
// receive arguments
|
// receive arguments
|
||||||
if (mySock->ReceiveDataOnly(&index,sizeof(index)) < 0 )
|
if (mySock->ReceiveDataOnly(&index,sizeof(index)) < 0 )
|
||||||
@ -2639,7 +2639,7 @@ int slsReceiverTCPIPInterface::set_udp_socket_buffer_size() {
|
|||||||
invalidReceiverObject();
|
invalidReceiverObject();
|
||||||
else {
|
else {
|
||||||
// set
|
// set
|
||||||
if(index >= 0) {
|
if((int64_t)index >= 0) {
|
||||||
if (mySock->differentClients && lockStatus)
|
if (mySock->differentClients && lockStatus)
|
||||||
receiverlocked();
|
receiverlocked();
|
||||||
else if (receiverBase->getStatus() != IDLE)
|
else if (receiverBase->getStatus() != IDLE)
|
||||||
@ -2654,9 +2654,10 @@ int slsReceiverTCPIPInterface::set_udp_socket_buffer_size() {
|
|||||||
}
|
}
|
||||||
//get
|
//get
|
||||||
retval=receiverBase->getUDPSocketBufferSize();
|
retval=receiverBase->getUDPSocketBufferSize();
|
||||||
if(index >= 0 && ((retval != index) || ((int)receiverBase->getActualUDPSocketBufferSize() != (index*2)))) {
|
if((int64_t)index >= 0 && ((retval != index) || (receiverBase->getActualUDPSocketBufferSize() != (index*2)))) {
|
||||||
ret = FAIL;
|
ret = FAIL;
|
||||||
strcpy(mess, "Could not set UDP Socket buffer size (No CAP_NET_ADMIN privileges?)\n");
|
sprintf(mess, "Could not set UDP Socket buffer size (No CAP_NET_ADMIN privileges?). "
|
||||||
|
"set %lld, got %lld\n", (long long unsigned int)index, (long long unsigned int)retval);
|
||||||
FILE_LOG(logERROR) << mess;
|
FILE_LOG(logERROR) << mess;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user