JNIEXPORT jlong JNICALL Java_org_zeromq_czmq_Zsock__1_1new (JNIEnv *env, jclass c, jint type) { // Disable CZMQ signal handling; allow Java to deal with it zsys_handler_set (NULL); jlong new_ = (jlong) (intptr_t) zsock_new ((int) type); return new_; }
int zsys_test (bool verbose) { printf (" * zsys: "); // @selftest zsys_handler_reset (); zsys_handler_set (NULL); zsys_handler_set (NULL); zsys_handler_reset (); zsys_handler_reset (); int rc = zsys_file_delete ("nosuchfile"); assert (rc == -1); bool rc_bool = zsys_file_exists ("nosuchfile"); assert (rc_bool != true); rc = (int) zsys_file_size ("nosuchfile"); assert (rc == -1); time_t when = zsys_file_modified ("."); assert (when > 0); rc = zsys_dir_create ("%s/%s", ".", ".testsys/subdir"); assert (rc == 0); when = zsys_file_modified ("./.testsys/subdir"); assert (when > 0); rc = zsys_dir_delete ("%s/%s", ".", ".testsys/subdir"); assert (rc == 0); char *string = s_vprintf ("%s %02x", "Hello", 16); assert (streq (string, "Hello 10")); zstr_free (&string); char *str64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,."; int num10 = 1234567890; string = s_vprintf ("%s%s%s%s%d", str64, str64, str64, str64, num10); assert (strlen (string) == (4 * 64 + 10)); zstr_free (&string); // @end printf ("OK\n"); return 0; }
static rsRetVal initZMQ(instanceData* pData) { DEFiRet; /* create the context if necessary. */ if (NULL == s_context) { zsys_handler_set(NULL); s_context = zctx_new(); if (s_workerThreads > 0) zctx_set_iothreads(s_context, s_workerThreads); } pData->socket = zsocket_new(s_context, pData->type); if (NULL == pData->socket) { errmsg.LogError(0, RS_RET_NO_ERRCODE, "omzmq3: zsocket_new failed for %s: %s", pData->description, zmq_strerror(errno)); ABORT_FINALIZE(RS_RET_NO_ERRCODE); } /* use czmq defaults for these, unless set to non-default values */ if(pData->identity) zsocket_set_identity(pData->socket, (char*)pData->identity); if(pData->sndBuf > -1) zsocket_set_sndbuf(pData->socket, pData->sndBuf); if(pData->rcvBuf > -1) zsocket_set_sndbuf(pData->socket, pData->rcvBuf); if(pData->linger > -1) zsocket_set_linger(pData->socket, pData->linger); if(pData->backlog > -1) zsocket_set_backlog(pData->socket, pData->backlog); if(pData->sndTimeout > -1) zsocket_set_sndtimeo(pData->socket, pData->sndTimeout); if(pData->rcvTimeout > -1) zsocket_set_rcvtimeo(pData->socket, pData->rcvTimeout); if(pData->maxMsgSize > -1) zsocket_set_maxmsgsize(pData->socket, pData->maxMsgSize); if(pData->rate > -1) zsocket_set_rate(pData->socket, pData->rate); if(pData->recoveryIVL > -1) zsocket_set_recovery_ivl(pData->socket, pData->recoveryIVL); if(pData->multicastHops > -1) zsocket_set_multicast_hops(pData->socket, pData->multicastHops); if(pData->reconnectIVL > -1) zsocket_set_reconnect_ivl(pData->socket, pData->reconnectIVL); if(pData->reconnectIVLMax > -1) zsocket_set_reconnect_ivl_max(pData->socket, pData->reconnectIVLMax); if(pData->ipv4Only > -1) zsocket_set_ipv4only(pData->socket, pData->ipv4Only); if(pData->affinity != 1) zsocket_set_affinity(pData->socket, pData->affinity); if(pData->rcvHWM > -1) zsocket_set_rcvhwm(pData->socket, pData->rcvHWM); if(pData->sndHWM > -1) zsocket_set_sndhwm(pData->socket, pData->sndHWM); /* bind or connect to it */ if (pData->action == ACTION_BIND) { /* bind asserts, so no need to test return val here which isn't the greatest api -- oh well */ if(-1 == zsocket_bind(pData->socket, (char*)pData->description)) { errmsg.LogError(0, RS_RET_NO_ERRCODE, "omzmq3: bind failed for %s: %s", pData->description, zmq_strerror(errno)); ABORT_FINALIZE(RS_RET_NO_ERRCODE); } DBGPRINTF("omzmq3: bind to %s successful\n",pData->description); } else { if(-1 == zsocket_connect(pData->socket, (char*)pData->description)) { errmsg.LogError(0, RS_RET_NO_ERRCODE, "omzmq3: connect failed for %s: %s", pData->description, zmq_strerror(errno)); ABORT_FINALIZE(RS_RET_NO_ERRCODE); } DBGPRINTF("omzmq3: connect to %s successful", pData->description); } finalize_it: RETiRet; }
JNIEXPORT jlong JNICALL Java_org_zeromq_zyre_Zyre__1_1new (JNIEnv *env, jclass c, jstring name) { char *name_ = (char *) (*env)->GetStringUTFChars (env, name, NULL); // Disable CZMQ signal handling; allow Java to deal with it zsys_handler_set (NULL); jlong new_ = (jlong) (intptr_t) zyre_new (name_); (*env)->ReleaseStringUTFChars (env, name, name_); return new_; }
JNIEXPORT jlong JNICALL Java_org_zeromq_czmq_Zcertstore__1_1new (JNIEnv *env, jclass c, jstring location) { char *location_ = (char *) (*env)->GetStringUTFChars (env, location, NULL); // Disable CZMQ signal handling; allow Java to deal with it zsys_handler_set (NULL); jlong new_ = (jlong) (intptr_t) zcertstore_new (location_); (*env)->ReleaseStringUTFChars (env, location, location_); return new_; }
JNIEXPORT jlong JNICALL Java_org_zeromq_czmq_Zchunk__1_1new (JNIEnv *env, jclass c, jbyteArray data, jlong size) { jbyte *data_ = (byte *) (*env)->GetByteArrayElements (env, data, 0); // Disable CZMQ signal handling; allow Java to deal with it zsys_handler_set (NULL); jlong new_ = (jlong) (intptr_t) zchunk_new (data_, (size_t) size); (*env)->ReleaseByteArrayElements (env, data, (jbyte *) data_, 0); return new_; }
JNIEXPORT jlong JNICALL Java_org_zeromq_czmq_Zdir__1_1new (JNIEnv *env, jclass c, jstring path, jstring parent) { char *path_ = (char *) (*env)->GetStringUTFChars (env, path, NULL); char *parent_ = (char *) (*env)->GetStringUTFChars (env, parent, NULL); // Disable CZMQ signal handling; allow Java to deal with it zsys_handler_set (NULL); jlong new_ = (jlong) (intptr_t) zdir_new (path_, parent_); (*env)->ReleaseStringUTFChars (env, path, path_); (*env)->ReleaseStringUTFChars (env, parent, parent_); return new_; }
int zsys_test (bool verbose) { printf (" * zsys: "); // @selftest zsys_handler_reset (); zsys_handler_set (NULL); zsys_handler_set (NULL); zsys_handler_reset (); zsys_handler_reset (); int rc = zsys_file_delete ("nosuchfile"); assert (rc == -1); bool rc_bool = zsys_file_exists ("nosuchfile"); assert (rc_bool != true); rc = (int) zsys_file_size ("nosuchfile"); assert (rc == -1); time_t when = zsys_file_modified ("."); assert (when > 0); rc = zsys_dir_create ("%s/%s", ".", ".testsys/subdir"); assert (rc == 0); when = zsys_file_modified ("./.testsys/subdir"); assert (when > 0); rc = zsys_dir_delete ("%s/%s", ".", ".testsys/subdir"); assert (rc == 0); char *string = s_vprintf ("%s %02x", "Hello", 16); assert (streq (string, "Hello 10")); free (string); // @end printf ("OK\n"); return 0; }
int main (int ac, char **av) { int rc; struct subprocess_manager *sm; struct subprocess *p; flux_reactor_t *r; zsys_handler_set (NULL); plan (NO_PLAN); if (!(sm = subprocess_manager_create ())) BAIL_OUT ("Failed to create subprocess manager"); ok (sm != NULL, "create subprocess manager"); if (!(r = flux_reactor_create (FLUX_REACTOR_SIGCHLD))) BAIL_OUT ("Failed to create a reactor"); rc = subprocess_manager_set (sm, SM_REACTOR, r); ok (rc == 0, "set subprocess manager reactor (rc=%d, %s)", rc, strerror (errno)); if (!(p = subprocess_create (sm))) BAIL_OUT ("Failed to create a subprocess object"); ok (subprocess_set_callback (p, exit_handler, r) >= 0, "set subprocess exit handler"); ok (subprocess_set_io_callback (p, io_cb) >= 0, "set subprocess io callback"); ok (subprocess_set_command (p, "sleep 0.5 && /bin/echo -n 'hello\nworld\n'") >= 0, "set subprocess command"); ok (subprocess_set_environ (p, environ) >= 0, "set subprocess environ"); ok (subprocess_fork (p) >= 0, "subprocess_fork"); ok (subprocess_exec (p) >= 0, "subprocess_exec"); ok (flux_reactor_run (r, 0) == 0, "reactor returned normally"); subprocess_manager_destroy (sm); flux_reactor_destroy (r); done_testing (); }
/** * @brief Connects to the 0mq socket on path. * * Connects to the 0mq socket located on the file path passed in, then stores that socket in the global display struct * upon success. * * @returns Whether the connection succeeded. * * @param path The path to the 0mq socket in the filesystem. */ __PUBLIC bool mux_connect(const char *path) { display->zmq.path = path; display->zmq.socket = zsock_new_dealer(display->zmq.path); zsys_handler_set(mux_handler); if (display->zmq.socket == NULL) { mux_printf_error("0mq socket creation failed"); return false; } display->zmq.poller = zpoller_new(display->zmq.socket, NULL); if (display->zmq.poller == NULL) { mux_printf_error("Could not initialize socket poller"); return false; } mux_printf("Bound to %s", path); return true; }
zctx_t * zctx_new (void) { zctx_t *self; self = (zctx_t *) zmalloc (sizeof (zctx_t)); if (!self) return NULL; self->sockets = zlist_new (); if (!self->sockets) { free (self); return NULL; } self->iothreads = 1; self->main = true; zsys_handler_set (s_signal_handler); return self; }
/// // Set interrupt handler; this saves the default handlers so that a // zsys_handler_reset () can restore them. If you call this multiple times // then the last handler will take affect. If handler_fn is NULL, disables // default SIGINT/SIGTERM handling in CZMQ. void QmlZsysAttached::handlerSet (zsys_handler_fn *handlerFn) { zsys_handler_set (handlerFn); };
void zsys_catch_interrupts (void) { zsys_handler_set (s_signal_handler); }
/// // Set interrupt handler; this saves the default handlers so that a // zsys_handler_reset () can restore them. If you call this multiple times // then the last handler will take affect. If handler_fn is NULL, disables // default SIGINT/SIGTERM handling in CZMQ. void QZsys::handlerSet (zsys_handler_fn *handlerFn) { zsys_handler_set (handlerFn); }