Commit 57d9c3d3 authored by chiaming2000's avatar chiaming2000
Browse files

Batch operation initial prototype implementation.

parent f62feb30
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -29,4 +29,4 @@ database.db
*.result
/target

/kinetic-common/src/main/java/com/seagate/kinetic/proto/kinetic.proto
#/kinetic-common/src/main/java/com/seagate/kinetic/proto/kinetic.proto
+52 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

import kinetic.client.BatchOperation;
import kinetic.client.CallbackHandler;
import kinetic.client.ClientConfiguration;
import kinetic.client.Entry;
@@ -36,7 +37,6 @@ import com.seagate.kinetic.client.internal.ClientProxy.LCException;
import com.seagate.kinetic.client.lib.ClientLogger;
import com.seagate.kinetic.common.lib.KineticMessage;
import com.seagate.kinetic.proto.Kinetic.Command;

import com.seagate.kinetic.proto.Kinetic.Command.MessageType;
import com.seagate.kinetic.proto.Kinetic.Command.Synchronization;

@@ -938,4 +938,55 @@ public class DefaultKineticClient implements AdvancedKineticClient {
        this.client.requestAsync(message, handler);
    }

    /**
     * start a new batch operation.
     * 
     * @throws KineticException
     *             if any error occurred.
     */
    void startBatchOperation() throws KineticException {

        KineticMessage request = null;
        KineticMessage response = null;

        // create get request message
        request = MessageFactory.createStartBatchRequestMessage();

        // send request
        response = this.client.request(request);

        // check response
        MessageFactory.checkReply(request, response);
    }

    /**
     * commit the batch operation.
     * 
     * @throws KineticException
     *             if any error occurred.
     */
    void endBatchOperation() throws KineticException {

        KineticMessage request = null;
        KineticMessage response = null;

        // create get request message
        request = MessageFactory.createEndBatchRequestMessage();

        // send request
        response = this.client.request(request);

        // check response
        MessageFactory.checkReply(request, response);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public BatchOperation createBatchOperation() throws KineticException {
        // create and return a new instance of BatchOperation implementation
        return new DefaultBatchOperation(this);
    }

}
+25 −3
Original line number Diff line number Diff line
@@ -27,15 +27,14 @@ import kinetic.client.VersionMismatchException;
import com.google.protobuf.ByteString;
import com.seagate.kinetic.common.lib.KineticMessage;
import com.seagate.kinetic.proto.Kinetic.Command;
import com.seagate.kinetic.proto.Kinetic.Message;
import com.seagate.kinetic.proto.Kinetic.Command.Algorithm;
import com.seagate.kinetic.proto.Kinetic.Message.AuthType;

import com.seagate.kinetic.proto.Kinetic.Command.KeyValue;
import com.seagate.kinetic.proto.Kinetic.Command.MessageType;
import com.seagate.kinetic.proto.Kinetic.Command.Range;
import com.seagate.kinetic.proto.Kinetic.Command.Status.StatusCode;
import com.seagate.kinetic.proto.Kinetic.Command.Synchronization;
import com.seagate.kinetic.proto.Kinetic.Message;
import com.seagate.kinetic.proto.Kinetic.Message.AuthType;

/**
 * Kinetic Message factory for the Java API client runtime implementation.
@@ -419,6 +418,29 @@ public class MessageFactory {
        return kineticMessage;
    }
    
    public static KineticMessage createStartBatchRequestMessage()
            throws KineticException {

        KineticMessage kineticMessage = createKineticMessageWithBuilder();

        Command.Builder request = (Command.Builder) kineticMessage.getCommand();

        request.getHeaderBuilder().setMessageType(MessageType.START_BATCH);

        return kineticMessage;
    }

    public static KineticMessage createEndBatchRequestMessage()
            throws KineticException {

        KineticMessage kineticMessage = createKineticMessageWithBuilder();

        Command.Builder request = (Command.Builder) kineticMessage.getCommand();

        request.getHeaderBuilder().setMessageType(MessageType.END_BATCH);

        return kineticMessage;
    }

    /**
     * create an internal message with empty builder message.
+7 −0
Original line number Diff line number Diff line
@@ -498,6 +498,13 @@ public interface KineticClient extends GenericKineticClient {
    public void getMetadataAsync(byte[] key,
            CallbackHandler<EntryMetadata> handler) throws KineticException;

    /**
     * Create a new instance of <code>BatchOperation</code> object.
     * 
     * @return a new instance of <code>BatchOperation</code> object.
     */
    public BatchOperation createBatchOperation() throws KineticException;;

    /**
     * Close the connection and release all resources allocated by this
     * instance.
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@
	<packaging>jar</packaging>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<skipProtoSync>false</skipProtoSync>
		<skipProtoSync>true</skipProtoSync>
	</properties>
	<build>
		<plugins>
Loading