コード例 #1
0
ファイル: test_publisher.c プロジェクト: skaes/logjam-tools
int main(int argc, char const * const *argv)
{
  int rc;

  zsys_set_sndhwm(1);
  zsys_set_linger(100);

  void *pusher = zsock_new(ZMQ_PUSH);
  assert(pusher);
  zsock_set_sndhwm(pusher, 1000);
  zsock_set_linger(pusher, 500);
  rc = zsock_connect(pusher, "tcp://localhost:12345");
  assert(rc==0);

  void *puller = zsock_new(ZMQ_PULL);
  assert(puller);
  zsock_set_rcvhwm(puller, 1000);
  zsock_set_linger(puller, 500);
  rc = zsock_bind(puller, "tcp://*:12345");
  if (rc != 12345){
    printf("bind failed: %s\n", zmq_strerror(errno));
  }
  assert(rc == 12345);

  void *publisher = zsock_new(ZMQ_PUB);
  assert(publisher);
  zsock_set_sndhwm(publisher, 1000);
  zsock_set_linger(publisher, 500);
  rc = zsock_bind(publisher, "tcp://*:12346");
  assert(rc==12346);

  // set up event loop
  zloop_t *loop = zloop_new();
  assert(loop);
  zloop_set_verbose(loop, 0);

  // push data every 10 ms
  rc = zloop_timer(loop, 1, 0, timer_event, pusher);
  assert(rc != -1);

  zmq_pollitem_t item;
  item.socket = puller;
  item.events = ZMQ_POLLIN;
  rc = zloop_poller(loop, &item, forward, publisher);
  assert(rc == 0);

  rc = zloop_start(loop);
  printf("zloop return: %d", rc);

  zloop_destroy(&loop);
  assert(loop == NULL);

  return 0;
}
コード例 #2
0
static
zsock_t* subscriber_pull_socket_new(zconfig_t* config)
{
    zsock_t *socket = zsock_new(ZMQ_PULL);
    assert(socket);
    zsock_set_linger(socket, 0);
    zsock_set_reconnect_ivl(socket, 100); // 100 ms
    zsock_set_reconnect_ivl_max(socket, 10 * 1000); // 10 s

    char *pull_spec = zconfig_resolve(config, "frontend/endpoints/subscriber/pull", "tcp://*");
    char *full_spec = augment_zmq_connection_spec(pull_spec, pull_port);
    if (!quiet)
        printf("[I] subscriber: binding PULL socket to %s\n", full_spec);
    int rc = zsock_bind(socket, "%s", full_spec);
    assert(rc != -1);
    free(full_spec);

    const char *inproc_binding = "inproc://subscriber-pull";
    if (!quiet)
        printf("[I] subscriber: binding PULL socket to %s\n", inproc_binding);
    rc = zsock_bind(socket, "%s", inproc_binding);
    assert(rc != -1);

    return socket;
}
コード例 #3
0
static
zsock_t* subscriber_router_socket_new(zconfig_t* config)
{
    zsock_t *socket = zsock_new(ZMQ_ROUTER);
    assert(socket);
    zsock_set_linger(socket, 0);
    zsock_set_reconnect_ivl(socket, 100); // 100 ms
    zsock_set_reconnect_ivl_max(socket, 10 * 1000); // 10 s

    char *router_spec = zconfig_resolve(config, "frontend/endpoints/subscriber/router", "tcp://*");
    char *full_spec = augment_zmq_connection_spec(router_spec, router_port);
    if (!quiet)
        printf("[I] subscriber: binding ROUTER socket to %s\n", full_spec);
    int rc = zsock_bind(socket, "%s", full_spec);
    assert(rc != -1);
    free(full_spec);

    return socket;
}
コード例 #4
0
ファイル: maltcp_ctx.c プロジェクト: ccsdsmo/malc
void maltcp_ctx_destroy_endpoint(void *self, void **endpoint_p) {
  assert(endpoint_p);
  if (*endpoint_p) {
    maltcp_endpoint_data_t *endpoint = *(maltcp_endpoint_data_t **) endpoint_p;
    *endpoint_p = NULL;

    clog_debug(maltcp_logger, "maltcp_ctx_destroy_endpoint(): %d ..\n", endpoint->socket);
    // NOTE: Closing this socket makes a core dump during maltcp_ctx_destroy !!
    zsock_set_linger(endpoint->socket, 0);
//    zsocket_destroy(endpoint->maltcp_ctx->zmq_ctx, endpoint->socket);
//    zmq_close(endpoint->socket);

    //  ... destroy your own state here

    // mal_ctx and mal_endpoint must not be destroyed here
    // but where they have been created.

    free(endpoint);
    clog_debug(maltcp_logger, "maltcp_ctx_destroy_endpoint().\n");
  }
}
コード例 #5
0
static
zsock_t* subscriber_sub_socket_new(zconfig_t* config, zlist_t* devices)
{
    zsock_t *socket = zsock_new(ZMQ_SUB);
    assert(socket);
    zsock_set_rcvhwm(socket, rcv_hwm);
    zsock_set_linger(socket, 0);
    zsock_set_reconnect_ivl(socket, 100); // 100 ms
    zsock_set_reconnect_ivl_max(socket, 10 * 1000); // 10 s

    // connect socket to endpoints
    char* spec = zlist_first(devices);
    while (spec) {
        if (!quiet)
            printf("[I] subscriber: connecting SUB socket to: %s\n", spec);
        int rc = zsock_connect(socket, "%s", spec);
        log_zmq_error(rc, __FILE__, __LINE__);
        assert(rc == 0);
        spec = zlist_next(devices);
    }

    return socket;
}
コード例 #6
0
ファイル: qzsock.cpp プロジェクト: digideskio/zebra
///
//  Set socket option `linger`.
void QZsock::setLinger (int linger)
{
    zsock_set_linger (self, linger);
    
}
コード例 #7
0
JNIEXPORT void JNICALL
Java_org_zeromq_czmq_Zsock__1_1setLinger (JNIEnv *env, jclass c, jlong self, jint linger)
{
    zsock_set_linger ((zsock_t *) (intptr_t) self, (int) linger);
}