pn_dispatcher_t *pn_dispatcher(uint8_t frame_type, pn_transport_t *transport) { pn_dispatcher_t *disp = (pn_dispatcher_t *) calloc(sizeof(pn_dispatcher_t), 1); disp->frame_type = frame_type; disp->transport = transport; disp->trace = (pn_env_bool("PN_TRACE_RAW") ? PN_TRACE_RAW : PN_TRACE_OFF) | (pn_env_bool("PN_TRACE_FRM") ? PN_TRACE_FRM : PN_TRACE_OFF) | (pn_env_bool("PN_TRACE_DRV") ? PN_TRACE_DRV : PN_TRACE_OFF); disp->input = pn_buffer(1024); disp->fragment = 0; disp->channel = 0; disp->code = 0; disp->args = pn_data(16); disp->payload = NULL; disp->size = 0; disp->output_args = pn_data(16); disp->frame = pn_buffer( 4*1024 ); // XXX disp->capacity = 4*1024; disp->output = (char *) malloc(disp->capacity); disp->available = 0; disp->halt = false; disp->batch = true; disp->scratch = pn_string(NULL); return disp; }
void pni_iocp_initialize(void *obj) { iocp_t *iocp = (iocp_t *) obj; memset(iocp, 0, sizeof(iocp_t)); pni_shared_pool_create(iocp); iocp->completion_port = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0); assert(iocp->completion_port != NULL); iocp->iocpdesc_map = pn_hash(PN_OBJECT, 0, 0.75); iocp->zombie_list = pn_list(PN_OBJECT, 0); iocp->iocp_trace = pn_env_bool("PN_TRACE_DRV"); iocp->selector = NULL; }
void pn_io_initialize(void *obj) { pn_io_t *io = (pn_io_t *) obj; io->error = pn_error(); io->wouldblock = false; io->trace = pn_env_bool("PN_TRACE_DRV"); /* Request WinSock 2.2 */ WORD wsa_ver = MAKEWORD(2, 2); WSADATA unused; int err = WSAStartup(wsa_ver, &unused); if (err) { pni_win32_error(io->error, "WSAStartup", WSAGetLastError()); fprintf(stderr, "Can't load WinSock: %s\n", pn_error_text(io->error)); } io->iocp = pni_iocp(); }