mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-20 16:48:01 +02:00
WIP, moved bool primaryinterface to an int interface_id
This commit is contained in:
@ -6846,14 +6846,11 @@ int get_receiver_parameters(int file_des) {
|
|||||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||||
if (n < 0) return printSocketReadError();
|
if (n < 0) return printSocketReadError();
|
||||||
// multisize
|
// multisize
|
||||||
i32 = 0;
|
|
||||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||||
if (n < 0) return printSocketReadError();
|
if (n < 0) return printSocketReadError();
|
||||||
i32 = 0;
|
|
||||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||||
if (n < 0) return printSocketReadError();
|
if (n < 0) return printSocketReadError();
|
||||||
// detId
|
// detId
|
||||||
i32 = 0;
|
|
||||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||||
if (n < 0) return printSocketReadError();
|
if (n < 0) return printSocketReadError();
|
||||||
// hostname
|
// hostname
|
||||||
@ -6863,14 +6860,10 @@ int get_receiver_parameters(int file_des) {
|
|||||||
n += sendData(file_des, hostname, MAX_STR_LENGTH, OTHER);
|
n += sendData(file_des, hostname, MAX_STR_LENGTH, OTHER);
|
||||||
if (n < 0) return printSocketReadError();
|
if (n < 0) return printSocketReadError();
|
||||||
}
|
}
|
||||||
// primary interface
|
// interface id
|
||||||
{
|
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||||
char c = '0';
|
|
||||||
n += sendData(file_des, &c, 1, OTHER);
|
|
||||||
if (n < 0) return printSocketReadError();
|
if (n < 0) return printSocketReadError();
|
||||||
}
|
|
||||||
// zmq ip
|
// zmq ip
|
||||||
i32 = 0;
|
|
||||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||||
if (n < 0) return printSocketReadError();
|
if (n < 0) return printSocketReadError();
|
||||||
// end of shared memory variables in struct
|
// end of shared memory variables in struct
|
||||||
|
@ -213,8 +213,8 @@ void DetectorImpl::initializeMembers(bool verify) {
|
|||||||
receivers.resize(numModules);
|
receivers.resize(numModules);
|
||||||
for (int iReceiver = 0; iReceiver < numReceivers; ++iReceiver) {
|
for (int iReceiver = 0; iReceiver < numReceivers; ++iReceiver) {
|
||||||
receivers[iModule].push_back(
|
receivers[iModule].push_back(
|
||||||
sls::make_unique<Receiver>(detectorId, iModule, iReceiver,
|
sls::make_unique<Receiver>(detectorId, iModule, 0,
|
||||||
true, verify));
|
iReceiver, verify));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int numReceivers2 = detectors[iModule]->getNumberOfReceivers2();
|
int numReceivers2 = detectors[iModule]->getNumberOfReceivers2();
|
||||||
@ -222,8 +222,8 @@ void DetectorImpl::initializeMembers(bool verify) {
|
|||||||
receivers2.resize(numModules);
|
receivers2.resize(numModules);
|
||||||
for (int iReceiver = 0; iReceiver < numReceivers2; ++iReceiver) {
|
for (int iReceiver = 0; iReceiver < numReceivers2; ++iReceiver) {
|
||||||
receivers2[iModule].push_back(
|
receivers2[iModule].push_back(
|
||||||
sls::make_unique<Receiver>(detectorId, iModule, iReceiver,
|
sls::make_unique<Receiver>(detectorId, iModule, 1,
|
||||||
false, verify));
|
iReceiver, verify));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -373,7 +373,7 @@ void DetectorImpl::initReceiver(const int udpInterface) {
|
|||||||
receivers.resize(detectors.size());
|
receivers.resize(detectors.size());
|
||||||
receivers[iModule].push_back(
|
receivers[iModule].push_back(
|
||||||
sls::make_unique<Receiver>(detectorId, iModule, 0,
|
sls::make_unique<Receiver>(detectorId, iModule, 0,
|
||||||
true, tcpPort++, "", zmqPort++));
|
0, tcpPort++, "", zmqPort++));
|
||||||
detectors[iModule]->setNumberOfReceivers(1);
|
detectors[iModule]->setNumberOfReceivers(1);
|
||||||
}
|
}
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@ -390,8 +390,8 @@ void DetectorImpl::initReceiver(const int udpInterface) {
|
|||||||
for (int iModule = 0; iModule < size(); ++iModule) {
|
for (int iModule = 0; iModule < size(); ++iModule) {
|
||||||
receivers2.resize(detectors.size());
|
receivers2.resize(detectors.size());
|
||||||
receivers2[iModule].push_back(
|
receivers2[iModule].push_back(
|
||||||
sls::make_unique<Receiver>(detectorId, iModule, 0,
|
sls::make_unique<Receiver>(detectorId, iModule, 1,
|
||||||
false, tcpPort++, "", zmqPort++));
|
0, tcpPort++, "", zmqPort++));
|
||||||
detectors[iModule]->setNumberOfReceivers2(1);
|
detectors[iModule]->setNumberOfReceivers2(1);
|
||||||
}
|
}
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
@ -99,11 +99,11 @@ Ret Receiver::sendToReceiver(int fnum, const Arg &args) const{
|
|||||||
|
|
||||||
|
|
||||||
// create shm
|
// create shm
|
||||||
Receiver::Receiver(int detector_id, int module_id, int receiver_id,
|
Receiver::Receiver(int detector_id, int module_id, int interface_id,
|
||||||
bool primaryInterface, int tcp_port, std::string hostname,
|
int receiver_id, int tcp_port, std::string hostname,
|
||||||
int zmq_port) :
|
int zmq_port) :
|
||||||
receiverId(receiver_id), moduleId(module_id),
|
receiverId(receiver_id), interfaceId(interface_id), moduleId(module_id),
|
||||||
shm(detector_id, module_id, receiver_id, primaryInterface) {
|
shm(detector_id, module_id, interface_id, receiver_id) {
|
||||||
|
|
||||||
// ensure shared memory was not created before
|
// ensure shared memory was not created before
|
||||||
if (shm.IsExisting()) {
|
if (shm.IsExisting()) {
|
||||||
@ -112,15 +112,14 @@ Receiver::Receiver(int detector_id, int module_id, int receiver_id,
|
|||||||
<< shm.GetName() << ". Freeing it again";
|
<< shm.GetName() << ". Freeing it again";
|
||||||
shm.RemoveSharedMemory();
|
shm.RemoveSharedMemory();
|
||||||
}
|
}
|
||||||
shm = SharedMemory<sharedReceiver>(detector_id, module_id, receiver_id,
|
shm = SharedMemory<sharedReceiver>(detector_id, module_id, interface_id,
|
||||||
primaryInterface);
|
receiver_id);
|
||||||
shm.CreateSharedMemory();
|
shm.CreateSharedMemory();
|
||||||
|
|
||||||
// initalize receiver structure
|
// initalize receiver structure
|
||||||
shm()->shmversion = RECEIVER_SHMVERSION;
|
shm()->shmversion = RECEIVER_SHMVERSION;
|
||||||
memset(shm()->hostname, 0, MAX_STR_LENGTH);
|
memset(shm()->hostname, 0, MAX_STR_LENGTH);
|
||||||
shm()->tcpPort = DEFAULT_RX_PORTNO + receiver_id;
|
shm()->tcpPort = DEFAULT_RX_PORTNO + receiver_id;
|
||||||
shm()->primaryInterface = primaryInterface;
|
|
||||||
shm()-> stoppedFlag = false;
|
shm()-> stoppedFlag = false;
|
||||||
shm()->zmqPort = DEFAULT_ZMQ_RX_PORTNO + receiver_id;
|
shm()->zmqPort = DEFAULT_ZMQ_RX_PORTNO + receiver_id;
|
||||||
shm()->zmqIp = IpAddr{};
|
shm()->zmqIp = IpAddr{};
|
||||||
@ -138,10 +137,10 @@ Receiver::Receiver(int detector_id, int module_id, int receiver_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// open shm
|
// open shm
|
||||||
Receiver::Receiver(int detector_id, int module_id, int receiver_id,
|
Receiver::Receiver(int detector_id, int module_id, int interface_id,
|
||||||
bool primaryInterface, bool verify) :
|
int receiver_id, bool verify) :
|
||||||
receiverId(receiver_id), moduleId(module_id),
|
receiverId(receiver_id), interfaceId(interface_id), moduleId(module_id),
|
||||||
shm(detector_id, module_id, receiver_id, primaryInterface) {
|
shm(detector_id, module_id, interface_id, receiver_id) {
|
||||||
shm.OpenSharedMemory();
|
shm.OpenSharedMemory();
|
||||||
if (verify && shm()->shmversion != RECEIVER_SHMVERSION) {
|
if (verify && shm()->shmversion != RECEIVER_SHMVERSION) {
|
||||||
std::ostringstream ss;
|
std::ostringstream ss;
|
||||||
@ -205,8 +204,8 @@ sls::MacAddr Receiver::configure(slsDetectorDefs::rxParameters arg) {
|
|||||||
// hostname
|
// hostname
|
||||||
memset(arg.hostname, 0, sizeof(arg.hostname));
|
memset(arg.hostname, 0, sizeof(arg.hostname));
|
||||||
strcpy_safe(arg.hostname, shm()->hostname);
|
strcpy_safe(arg.hostname, shm()->hostname);
|
||||||
// primary interface
|
// interface id
|
||||||
arg.primaryInterface = shm()->primaryInterface;
|
arg.interfaceId = interfaceId;
|
||||||
// zmqip
|
// zmqip
|
||||||
{
|
{
|
||||||
sls::IpAddr ip;
|
sls::IpAddr ip;
|
||||||
@ -230,7 +229,7 @@ sls::MacAddr Receiver::configure(slsDetectorDefs::rxParameters arg) {
|
|||||||
<< "detectorSize.y:" << arg.detectorSize.y << std::endl
|
<< "detectorSize.y:" << arg.detectorSize.y << std::endl
|
||||||
<< "moduleId:" << arg.moduleId << std::endl
|
<< "moduleId:" << arg.moduleId << std::endl
|
||||||
<< "hostname:" << arg.hostname << std::endl
|
<< "hostname:" << arg.hostname << std::endl
|
||||||
<< "primary Interace: " << arg.primaryInterface << std::endl
|
<< "interfaceId: " << arg.interfaceId << std::endl
|
||||||
<< "zmq ip:" << arg.zmq_ip << std::endl
|
<< "zmq ip:" << arg.zmq_ip << std::endl
|
||||||
<< "udpInterfaces:" << arg.udpInterfaces << std::endl
|
<< "udpInterfaces:" << arg.udpInterfaces << std::endl
|
||||||
<< "udp_dstport:" << arg.udp_dstport << std::endl
|
<< "udp_dstport:" << arg.udp_dstport << std::endl
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#define RECEIVER_SHMVERSION 0x200417
|
#define RECEIVER_SHMVERSION 0x200421
|
||||||
|
|
||||||
namespace sls {
|
namespace sls {
|
||||||
struct sharedReceiver {
|
struct sharedReceiver {
|
||||||
@ -15,7 +15,6 @@ namespace sls {
|
|||||||
int shmversion;
|
int shmversion;
|
||||||
char hostname[MAX_STR_LENGTH];
|
char hostname[MAX_STR_LENGTH];
|
||||||
int tcpPort;
|
int tcpPort;
|
||||||
bool primaryInterface;
|
|
||||||
/** END OF FIXED PATTERN -----------------------------------------------*/
|
/** END OF FIXED PATTERN -----------------------------------------------*/
|
||||||
|
|
||||||
int stoppedFlag;
|
int stoppedFlag;
|
||||||
@ -28,12 +27,12 @@ namespace sls {
|
|||||||
public:
|
public:
|
||||||
static size_t getNumReceivers();
|
static size_t getNumReceivers();
|
||||||
// create shm
|
// create shm
|
||||||
explicit Receiver(int detector_id, int module_id, int receiver_id,
|
explicit Receiver(int detector_id, int module_id, int interface_id,
|
||||||
bool primaryInterface, int tcp_port = 0, std::string hostname = "",
|
int receiver_id, int tcp_port = 0, std::string hostname = "",
|
||||||
int zmq_port = 0);
|
int zmq_port = 0);
|
||||||
// open shm
|
// open shm
|
||||||
explicit Receiver(int detector_id, int module_id, int receiver_id,
|
explicit Receiver(int detector_id, int module_id, int interface_id,
|
||||||
bool primaryInterface, bool verify);
|
int receiver_id, bool verify);
|
||||||
|
|
||||||
virtual ~Receiver();
|
virtual ~Receiver();
|
||||||
|
|
||||||
@ -148,8 +147,9 @@ namespace sls {
|
|||||||
|
|
||||||
void checkVersionCompatibility();
|
void checkVersionCompatibility();
|
||||||
const int receiverId{0};
|
const int receiverId{0};
|
||||||
|
const int interfaceId{0};
|
||||||
const int moduleId{0};
|
const int moduleId{0};
|
||||||
mutable sls::SharedMemory<sharedReceiver> shm{0, 0, 0, true};
|
mutable sls::SharedMemory<sharedReceiver> shm{0, 0, 0, 0};
|
||||||
};
|
};
|
||||||
|
|
||||||
} // sls
|
} // sls
|
@ -24,8 +24,7 @@
|
|||||||
|
|
||||||
#define SHM_MULTI_PREFIX "/slsDetectorPackage_multi_"
|
#define SHM_MULTI_PREFIX "/slsDetectorPackage_multi_"
|
||||||
#define SHM_MODULE_PREFIX "_module_"
|
#define SHM_MODULE_PREFIX "_module_"
|
||||||
#define SHM_RECEIVER_PREFIX "_receiver_"
|
#define SHM_RECEIVER_PREFIX "_receiver" //interface_id + '_'
|
||||||
#define SHM_RECEIVER2_PREFIX "_receiver2_"
|
|
||||||
#define SHM_ENV_NAME "SLSDETNAME"
|
#define SHM_ENV_NAME "SLSDETNAME"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
@ -41,12 +40,12 @@ class SharedMemory {
|
|||||||
* Constructor
|
* Constructor
|
||||||
* creates the single/multi detector shared memory name
|
* creates the single/multi detector shared memory name
|
||||||
* @param multiId multi detector id
|
* @param multiId multi detector id
|
||||||
* @param moduleId module detector id, -1 if a multi detector shared memory
|
* @param moduleId module detectr id, -1 if a multi detector shared memory
|
||||||
* @param receiverId receiver id, -1 if a multi detector or module shared memory
|
* @param interfaceId 0 for primary interface, 1 for secondary
|
||||||
* @param primaryInterface is false, for the second udp port receiver
|
* @param receiverId receiver id, -1 if not a rxr shm, else round robin entry
|
||||||
*/
|
*/
|
||||||
SharedMemory(int multiId, int moduleId, int receiverId = -1, bool primaryInterface = true) {
|
SharedMemory(int multiId, int moduleId, int interfaceId = 0, int receiverId = -1) {
|
||||||
name = ConstructSharedMemoryName(multiId, moduleId, receiverId, primaryInterface);
|
name = ConstructSharedMemoryName(multiId, moduleId, interfaceId, receiverId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -221,12 +220,12 @@ class SharedMemory {
|
|||||||
* throws exception if name created is longer than required 255(manpages)
|
* throws exception if name created is longer than required 255(manpages)
|
||||||
* @param multiId multi detector id
|
* @param multiId multi detector id
|
||||||
* @param moduleId module detector id, -1 if a multi detector shared memory
|
* @param moduleId module detector id, -1 if a multi detector shared memory
|
||||||
* @param receiverId receiver id, -1 if a multi detector or module shared memory
|
* @param interfaceId 0 for primary interface, 1 for secondary
|
||||||
* @param primaryInterface false, if second udp port receiver
|
* @param receiverId receiver id, -1 if not a rxr shm, else round robin entry
|
||||||
* @returns shared memory name
|
* @returns shared memory name
|
||||||
*/
|
*/
|
||||||
std::string ConstructSharedMemoryName(int multiId, int moduleId,
|
std::string ConstructSharedMemoryName(int multiId, int moduleId,
|
||||||
int receiverId, bool primaryInterface) {
|
int interfaceId = 0, int receiverId = -1) {
|
||||||
|
|
||||||
// using environment path
|
// using environment path
|
||||||
std::string sEnvPath = "";
|
std::string sEnvPath = "";
|
||||||
@ -242,15 +241,10 @@ class SharedMemory {
|
|||||||
else if (receiverId < 0)
|
else if (receiverId < 0)
|
||||||
ss << SHM_MULTI_PREFIX << multiId <<
|
ss << SHM_MULTI_PREFIX << multiId <<
|
||||||
SHM_MODULE_PREFIX << moduleId << sEnvPath;
|
SHM_MODULE_PREFIX << moduleId << sEnvPath;
|
||||||
else if (primaryInterface)
|
|
||||||
ss << SHM_MULTI_PREFIX << multiId <<
|
|
||||||
SHM_MODULE_PREFIX << moduleId <<
|
|
||||||
SHM_RECEIVER_PREFIX << receiverId << sEnvPath;
|
|
||||||
else
|
else
|
||||||
ss << SHM_MULTI_PREFIX << multiId <<
|
ss << SHM_MULTI_PREFIX << multiId <<
|
||||||
SHM_MODULE_PREFIX << moduleId <<
|
SHM_MODULE_PREFIX << moduleId <<
|
||||||
SHM_RECEIVER2_PREFIX << receiverId << sEnvPath;
|
SHM_RECEIVER_PREFIX << interfaceId << '_' << receiverId << sEnvPath;
|
||||||
|
|
||||||
|
|
||||||
std::string temp = ss.str();
|
std::string temp = ss.str();
|
||||||
if (temp.length() > NAME_MAX_LENGTH) {
|
if (temp.length() > NAME_MAX_LENGTH) {
|
||||||
|
@ -334,7 +334,7 @@ int ClientInterface::setup_receiver(Interface &socket) {
|
|||||||
<< "detectorSize.y:" << arg.detectorSize.y << std::endl
|
<< "detectorSize.y:" << arg.detectorSize.y << std::endl
|
||||||
<< "moduleId:" << arg.moduleId << std::endl
|
<< "moduleId:" << arg.moduleId << std::endl
|
||||||
<< "hostname:" << arg.hostname << std::endl
|
<< "hostname:" << arg.hostname << std::endl
|
||||||
<< "primary Interace: " << arg.primaryInterface << std::endl
|
<< "interfaceId: " << arg.interfaceId << std::endl
|
||||||
<< "zmq ip:" << arg.zmq_ip << std::endl
|
<< "zmq ip:" << arg.zmq_ip << std::endl
|
||||||
<< "udpInterfaces:" << arg.udpInterfaces << std::endl
|
<< "udpInterfaces:" << arg.udpInterfaces << std::endl
|
||||||
<< "udp_dstport:" << arg.udp_dstport << std::endl
|
<< "udp_dstport:" << arg.udp_dstport << std::endl
|
||||||
|
@ -470,7 +470,7 @@ class slsDetectorDefs {
|
|||||||
xy detectorSize;
|
xy detectorSize;
|
||||||
int moduleId{0};
|
int moduleId{0};
|
||||||
char hostname[MAX_STR_LENGTH];
|
char hostname[MAX_STR_LENGTH];
|
||||||
bool primaryInterface{true};
|
int interfaceId{0};
|
||||||
uint32_t zmq_ip{0U};
|
uint32_t zmq_ip{0U};
|
||||||
int udpInterfaces{1};
|
int udpInterfaces{1};
|
||||||
int udp_dstport{0};
|
int udp_dstport{0};
|
||||||
|
Reference in New Issue
Block a user