bitclientTransaction_t* bitclient_createTransaction() { bitclientTransaction_t* tx = (bitclientTransaction_t*)malloc(sizeof(bitclientTransaction_t)); memset(tx, 0, sizeof(bitclientTransaction_t)); // init lists tx->tx_in = simpleList_create(1); tx->tx_out = simpleList_create(1); // init version and misc tx->version = 1; tx->lock_time = 0; // return tx object return tx; }
/* * Creates a new instance of jsonRPC * port is the port identifier that is used for incoming connections * Returns NULL if the socket could not be created (most likely due to port being blocked) */ jsonRpcServer_t* jsonRpc_createServer(uint16 port) { jsonRpcServer_t* jr = (jsonRpcServer_t*)malloc(sizeof(jsonRpcServer_t)); memset(jr, 0, sizeof(jsonRpcServer_t)); // open port for incoming connections SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); SOCKADDR_IN addr; memset(&addr,0,sizeof(SOCKADDR_IN)); addr.sin_family=AF_INET; addr.sin_port=htons(port); addr.sin_addr.s_addr=INADDR_ANY; #ifdef _WIN32 if( bind(s,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN)) == SOCKET_ERROR ) #else if( bind(s, (SOCKADDR*)&addr,sizeof(SOCKADDR_IN)) == -1 ) #endif { #ifdef _WIN32 closesocket(s); #else close(s); #endif free(jr); return NULL; } listen(s, 64); jr->acceptSocket = s; // init misc jr->list_connections = simpleList_create(32); // return created server instance return jr; }
/* * Creates a new xptClient connection object, does not initiate connection right away */ xptClient_t* xptClient_create() { // create xpt connection object xptClient_t* xptClient = (xptClient_t*)malloc(sizeof(xptClient_t)); memset(xptClient, 0x00, sizeof(xptClient_t)); // initialize object xptClient->disconnected = true; xptClient->clientSocket = SOCKET_ERROR; xptClient->sendBuffer = xptPacketbuffer_create(256*1024); xptClient->recvBuffer = xptPacketbuffer_create(256*1024); InitializeCriticalSection(&xptClient->cs_shareSubmit); InitializeCriticalSection(&xptClient->cs_workAccess); xptClient->list_shareSubmitQueue = simpleList_create(4); // return object return xptClient; }