/* * Initialization for the stream opened by the other process */ static int openStream(Stream *stream) { jint error; error = sysIPMutexOpen(stream->shared->mutexName, &stream->mutex); if (error != SYS_OK) { fprintf(stderr,"Error accessing mutex, rc = %d\n", error); return error; } error = sysEventOpen(stream->shared->hasDataEventName, &stream->hasData); if (error != SYS_OK) { fprintf(stderr,"Error accessing mutex, rc = %d\n", error); (void)closeStream(stream); return error; } error = sysEventOpen(stream->shared->hasSpaceEventName, &stream->hasSpace); if (error != SYS_OK) { fprintf(stderr,"Error accessing mutex, rc = %d\n", error); (void)closeStream(stream); return error; } stream->state = STATE_OPEN; return SYS_OK; }
/* * Initialization for the stream opened by the other process */ static int openStream(Stream *stream) { jint error; CHECK_ERROR(sysIPMutexOpen(stream->shared->mutexName, &stream->mutex)); error = sysEventOpen(stream->shared->hasDataEventName, &stream->hasData); if (error != SYS_OK) { setLastError(error); (void)closeStream(stream, JNI_FALSE); return error; } error = sysEventOpen(stream->shared->hasSpaceEventName, &stream->hasSpace); if (error != SYS_OK) { setLastError(error); (void)closeStream(stream, JNI_FALSE); return error; } stream->state = STATE_OPEN; return SYS_OK; }
static int openTransport(const char *address, SharedMemoryTransport **transportPtr) { jint error; SharedMemoryTransport *transport; transport = allocTransport(); if (transport == NULL) { return SYS_NOMEM; } memset(transport, 0, sizeof(*transport)); if (strlen(address) >= MAX_IPC_PREFIX) { char buf[128]; sprintf(buf, "Error: address strings longer than %d characters are invalid\n", MAX_IPC_PREFIX); setLastErrorMsg(buf); closeTransport(transport); return SYS_ERR; } error = sysSharedMemOpen(address, &transport->sharedMemory, &transport->shared); if (error != SYS_OK) { setLastError(error); closeTransport(transport); return error; } strcpy(transport->name, address); error = sysIPMutexOpen(transport->shared->mutexName, &transport->mutex); if (error != SYS_OK) { setLastError(error); closeTransport(transport); return error; } error = sysEventOpen(transport->shared->acceptEventName, &transport->acceptEvent); if (error != SYS_OK) { setLastError(error); closeTransport(transport); return error; } error = sysEventOpen(transport->shared->attachEventName, &transport->attachEvent); if (error != SYS_OK) { setLastError(error); closeTransport(transport); return error; } *transportPtr = transport; return SYS_OK; }