diff --git a/src/DAQDataModelBase/DAQUtilities.cpp b/src/DAQDataModelBase/DAQUtilities.cpp index bdb667ff..515026c6 100644 --- a/src/DAQDataModelBase/DAQUtilities.cpp +++ b/src/DAQDataModelBase/DAQUtilities.cpp @@ -24,6 +24,32 @@ bool DAQUtilities::AddService(std::string ServiceName, unsigned int port, bool S return Ireceive.send(send); +} + +bool DAQUtilities::AddService(std::vector ServiceName, std::vector port, std::vector StatusQuery){ + + bool ret = true; + zmq::socket_t Ireceive (*context, ZMQ_PUSH); + Ireceive.connect("inproc://ServicePublish"); + + if(ServiceName.size() != port.size() || ServiceName.size() != StatusQuery.size()) return false; + + for(size_t i=0; i ServiceName, std::vector port, std::vector StatusQuery); ///< Broadcasts an available service (only in remote mode) bool RemoveService(std::string ServiceName); ///< Removes service broadcasts for a service bool AddPort(std::string ServiceName, unsigned int port); ///< Broadcasts an available port (only in remote mode) bool RemovePort(std::string ServiceName); ///< Removes port broadcasts for a service diff --git a/src/RemoteControl/RemoteControl.cpp b/src/RemoteControl/RemoteControl.cpp index 30698a3e..20a7ddcf 100644 --- a/src/RemoteControl/RemoteControl.cpp +++ b/src/RemoteControl/RemoteControl.cpp @@ -78,10 +78,12 @@ int main(int argc, char** argv){ zmq::message_t receive; Ireceive.recv(&receive); - std::istringstream iss(static_cast(receive.data())); + // std::istringstream iss(static_cast(receive.data())); int size; - iss>>size; + // iss>>size;s + + std::memcpy(&size, receive.data(), sizeof(size)); for(unsigned int i=0;i(servicem.data())); service->JsonParser(ss.str()); std::string name; @@ -107,7 +108,6 @@ int main(int argc, char** argv){ } - // zmq::message_t tmp; // Ireceive.recv(&tmp); diff --git a/src/ServiceDiscovery/ServiceDiscovery.cpp b/src/ServiceDiscovery/ServiceDiscovery.cpp index 1a61c392..783f1bf2 100644 --- a/src/ServiceDiscovery/ServiceDiscovery.cpp +++ b/src/ServiceDiscovery/ServiceDiscovery.cpp @@ -678,8 +678,8 @@ void* ServiceDiscovery::MulticastListenThread(void* arg){ int size= RemoteServices.size(); zmq::message_t sizem(sizeof size); - snprintf ((char *) sizem.data(), sizeof size , "%d" ,size) ; - + //snprintf ((char *) sizem.data(), sizeof size , "%d" ,size) ; + std::memcpy(sizem.data(), &size,sizeof size); // zmq::poll(out,1,1000); // if (out[0].revents & ZMQ_POLLOUT){ @@ -689,8 +689,8 @@ void* ServiceDiscovery::MulticastListenThread(void* arg){ if(size==0) Ireceive.send(sizem); else Ireceive.send(sizem,ZMQ_SNDMORE); - - for (std::map::iterator it=RemoteServices.begin(); it!=RemoteServices.end(); ){ + //printf("SD size=%u\n", size); + for (std::map::iterator it=RemoteServices.begin(); it!=RemoteServices.end(); ){ std::string service; *(it->second)>>service; @@ -717,7 +717,7 @@ void* ServiceDiscovery::MulticastListenThread(void* arg){ // } } - // } + // } }