Beispiel #1
0
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);
}
Beispiel #2
0
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);
}
Beispiel #3
0
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, &params, &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;
}
Beispiel #4
0
SP_HiveRespObject * SP_HiveDBProtocol :: executeProtoBuf( int dbfile, const char * user,
		const char * dbname, SP_NKStringList * sql )
{
	SP_ProtoBufEncoder params;
	{
		makeArgs( &params, 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;
}