void acquireMoreLocks(char* serviceName, int servicePort, char* fileName, int lockID, int numLocks, int64_t offsets[], int64_t lengths[]) { int i; MessageClient client = newClient(serviceName, servicePort); Message m = newMessage(); m->type = FILE_LOCK_CLIENT_SERVICE_CLIENT_MESSAGE; setStringParam(m, "functionName", "acquiremore"); setStringParam(m, "fileName", fileName); setIntegerParam(m, "numLocks", numLocks); setIntegerParam(m, "lockID", lockID); createLongArrayParam(m, "offsets", numLocks); createLongArrayParam(m, "lengths", numLocks); for (i = 0; i < numLocks; ++i) { setLongArrayParamValue(m, "offsets", i, offsets[i]); setLongArrayParamValue(m, "lengths", i, lengths[i]); } //printf("acquiremorelocks: Message to be sent:\n"); //printMessage(m); Message reply = clientCall(client, m); clientDisconnect(client); //printf("acquiremorelocks: Reply:\n"); //printMessage(reply); destroyMessage(m); destroyMessage(reply); }
void releaseBlockLocks(char* serviceName, int servicePort, char* fileName, int lockID) { MessageClient client = newClient(serviceName, servicePort); Message m = newMessage(); m->type = FILE_LOCK_CLIENT_SERVICE_CLIENT_MESSAGE; setStringParam(m, "functionName", "releaseblock"); setStringParam(m, "fileName", fileName); setIntegerParam(m, "lockID", lockID); Message reply = clientCall(client, m); clientDisconnect(client); destroyMessage(m); destroyMessage(reply); }
SP_HiveRespObject * SP_HiveDBProtocol :: executeJson( int dbfile, const char * user, const char * dbname, SP_NKStringList * sql ) { SP_JsonArrayNode params; { SP_JsonObjectNode * args = new SP_JsonObjectNode(); makeArgs( args, dbfile, user, dbname ); SP_JsonArrayNode * sqlNode = new SP_JsonArrayNode(); for( int i = 0; i < sql->getCount(); i++ ) { sqlNode->addValue( new SP_JsonStringNode( sql->getItem( i ) ) ); } SP_JsonPairNode * sqlPair = new SP_JsonPairNode(); sqlPair->setName( "sql" ); sqlPair->setValue( sqlNode ); args->addValue( sqlPair ); params.addValue( args ); } SP_JsonStringBuffer buffer; SP_JsonRpcUtils::toReqBuffer( "execute", user, ¶ms, &buffer ); SP_HiveRespObject * resp = NULL; SP_NKHttpResponse httpResp; int ret = clientCall( mSocket, "/sphivedb", mIsKeepAlive, buffer.getBuffer(), buffer.getSize(), &httpResp ); if( 0 == ret ) { SP_JsonRpcRespObject * inner = new SP_JsonRpcRespObject( (char*)httpResp.getContent(), httpResp.getContentLength() ); resp = new SP_HiveRespObjectJson( inner, 1 ); } else { SP_NKLog::log( LOG_WARNING, "clientCall %d", ret ); } return resp; }
SP_HiveRespObject * SP_HiveDBProtocol :: executeProtoBuf( int dbfile, const char * user, const char * dbname, SP_NKStringList * sql ) { SP_ProtoBufEncoder params; { makeArgs( ¶ms, dbfile, user, dbname ); for( int i = 0; i < sql->getCount(); i++ ) { params.addString( SP_HiveReqObjectProtoBuf::eSQL, sql->getItem(i) ); } } SP_ProtoBufEncoder reqEncoder; SP_ProtoBufRpcUtils::initReqEncoder( &reqEncoder, "execute", user ); reqEncoder.addBinary( SP_ProtoBufRpcReqObject::eParams, params.getBuffer(), params.getSize() ); SP_HiveRespObjectProtoBuf * resp = NULL; SP_NKHttpResponse httpResp; int ret = clientCall( mSocket, "/sphivedb/protobuf", mIsKeepAlive, reqEncoder.getBuffer(), reqEncoder.getSize(), &httpResp ); if( 0 == ret ) { SP_ProtoBufRpcRespObject * inner = new SP_ProtoBufRpcRespObject(); inner->copyFrom( (char*)httpResp.getContent(), httpResp.getContentLength() ); resp = new SP_HiveRespObjectProtoBuf( inner, 1 ); } else { SP_NKLog::log( LOG_WARNING, "clientCall %d", ret ); } return resp; }