void ZmqEventSupplier::create_event_socket() { if (event_pub_sock == NULL) { // // Create the Publisher socket for real events and bind it // If the user has specified one IP address on the command line, // re-use it in the endpoint // event_pub_sock = new zmq::socket_t(zmq_context,ZMQ_PUB); int linger = 0; event_pub_sock->setsockopt(ZMQ_LINGER,&linger,sizeof(linger)); event_endpoint = "tcp://"; if (ip_specified == true) { event_endpoint = event_endpoint + user_ip + ':'; } else { event_endpoint = event_endpoint + "*:"; } // // Set a publisher HWM // Tango::Util *tg = Tango::Util::instance(); DServer *admin_dev = tg->get_dserver_device(); int hwm = tg->get_user_pub_hwm(); if (hwm == -1) hwm = admin_dev->zmq_pub_event_hwm; event_pub_sock->setsockopt(ZMQ_SNDHWM,&hwm,sizeof(hwm)); // // Bind the publisher socket to one ephemeral port // tango_bind(event_pub_sock,event_endpoint); // // If needed, replace * by host IP address in enpoint string // if (ip_specified == false) { event_endpoint.replace(6,1,host_ip); } } }