Пример #1
0
void ConnectedApp::initConnection(string name_in) {

    int rc;

    name_client = zmq_socket(context, ZMQ_REQ);
    rc = zmq_connect(name_client, "ipc:///tmp/name");

    // send a name request
    Message m("name");
    m.send(name_client);

    cout << "ConnectedApp: send name request " << endl << flush;

    // poll for a few seconds
    zmq_pollitem_t items [] = {
        { name_client,  0, ZMQ_POLLIN, 0 }
    };
    zmq_poll(items, 1, 2 * 1000);

    if (items[0].revents & ZMQ_POLLIN) {

        // use the received name
        zmq_msg_t msg;
        zmq_msg_init(&msg);
        int r = zmq_msg_recv(&msg, name_client, 0);

        cout << "ConnectedApp: got name reply " << r << endl << flush;
        Message in_m(&msg);
        messages.push_back(in_m.message_string);
        zmq_msg_close(&msg);

        cout << "got name " << in_m.name << endl;
        this->name = in_m.name;

        address.str = "ipc:///tmp/" + name;
        server = zmq_socket(context, ZMQ_REP);
        rc = zmq_bind(server, address.str.c_str());

    } else {

        // if did not get a reply, use the tcp socket
        address.str = "tcp://*:" + ofToString(port_number);
        server = zmq_socket(context, ZMQ_REP);
        rc = zmq_bind(server, address.str.c_str());

        cout << "ConnectedApp: no name reply" << endl << flush;

    }

}
Пример #2
0
void ConnectedApp::processMessages() {

    zmq_msg_t in_msg;
    zmq_msg_init(&in_msg);
    if (zmq_msg_recv(&in_msg, server, ZMQ_DONTWAIT) != -1) {

        // reply to service messages
        Message in_m(&in_msg);

        if (in_m.name == "ping") {

            // 1) ping message
            Message m("status");
            m.addValue("ok");
            m.send(server);

        } else if (in_m.name == "input_ports") {

            // ports info request
            Message m("ports");
            for (int i = 0; i < ports_in.size(); i++) {
                m.addValue(ports_in[i]->name);
            }
            m.send(server);

        } else if (in_m.name == "output_ports") {

            // ports info request
            Message m("ports");
            for (int i = 0; i < ports_out.size(); i++) {
                m.addValue(ports_out[i]->name);
            }
            m.send(server);

        } else {

            // 1) ping message
            Message m("unknown");
            m.send(server);
        }

        messages.push_back(in_m.message_string);

    }
    zmq_msg_close(&in_msg);

}
	std::wostream& operator <<(std::wostream& out, in_mark< pp_nv_t<T> > const &v ){
		out << v.m_v.m_name << L"=" << in_m( v.m_v.m_val );
		return out;
	}
Пример #4
0
inline int	n_n(int dig) {
	dig++;
	while (!in_m(dig))
		dig++;
	return dig;
}