Пример #1
0
int main(int argc, char *argv[])
{
    zmq::context_t * ctx = new zmq::context_t(1);
    zmsg *request = new zmsg();
    request->body_set("Hello");
    zmsg *reply = NULL;

    int endpoints = argc - 1;
    if (endpoints == 0)
	std::
	    cout << "Error: syntax should be " << argv[0] <<
	    " <endpoint> ... \n";
    else if (endpoints == 1) {
	int retries;
	for (retries = 0; retries < MAX_RETRIES; retries++) {
	    char *endpoint = argv[1];
	    reply = retry_request(ctx, endpoint, request);
	    if (reply) {
		std::cout << "received reply from server 1\n";
		break;

	    }
	    std::
		cout << "No response from " << endpoint <<
		", retrying...\n";
	}
    } else {

	int i;
	for (i = 0; i < endpoints; i++) {

	    char *endpoint = argv[i + 1];
	    reply = retry_request(ctx, endpoint, request);
	    if (reply) {
		std::cout << "received reply from server " << i +
		    1 << "...\n";
		break;
	    }
	    std::cout << "No response from " << endpoint << std::endl;
	}
    }
    if (reply)
	std::cout << "Service is running OK\n";

    request->clear();
    reply->clear();
    ctx->close();

    return 0;
}
Пример #2
0
void
read_request()
{
	if (process_request()) {
		retry_request();
		return;
	}
	client.request->retries = 0;
	if (!client.request->done) {
		add_read_socket(client.socket->fd);
		return;
	}
	client.socket->buf = NULL;
	client.response = new_response(client.request);
	parse_path(client.request);
	add_write_socket(client.response->socket->fd);
	return;
}