View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.apache.omid.tso.client;
19  
20  import java.util.Set;
21  
22  /**
23   * Defines the protocol used on the client side to abstract communication to the TSO server
24   */
25  public interface TSOProtocol {
26  
27      /**
28       * Returns a new timestamp assigned by on the server-side
29       * @return the newly assigned timestamp as a future. If an error was detected, the future will contain a
30       * corresponding protocol exception
31       * @see TimestampOracle
32       * @see TSOServer
33       */
34      TSOFuture<Long> getNewStartTimestamp();
35  
36      /**
37       * Returns the result of the conflict detection made on the server-side for the specified transaction
38       * @param transactionId
39       *          the transaction to check for conflicts
40       * @param writeSet
41       *          the writeSet of the transaction, which includes all the modified cells
42       * @return the commit timestamp as a future if the transaction was committed. If the transaction was aborted due
43       * to conflicts with a concurrent transaction, the future will include an AbortException. If an error was detected,
44       * the future will contain a corresponding protocol exception
45       * @see TimestampOracle
46       * @see TSOServer
47       */
48      TSOFuture<Long> commit(long transactionId, Set<? extends CellId> writeSet);
49  
50      /**
51       * Closes the communication with the TSO server
52       * @return nothing. If an error was detected, the future will contain a corresponding protocol exception
53       */
54      TSOFuture<Void> close();
55  
56  }