PClient.java

  1. /*
  2.  * Copyright 2016 Providence Authors
  3.  *
  4.  * Licensed to the Apache Software Foundation (ASF) under one
  5.  * or more contributor license agreements. See the NOTICE file
  6.  * distributed with this work for additional information
  7.  * regarding copyright ownership. The ASF licenses this file
  8.  * to you under the Apache License, Version 2.0 (the
  9.  * "License"); you may not use this file except in compliance
  10.  * with the License. You may obtain a copy of the License at
  11.  *
  12.  *   http://www.apache.org/licenses/LICENSE-2.0
  13.  *
  14.  * Unless required by applicable law or agreed to in writing,
  15.  * software distributed under the License is distributed on an
  16.  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  17.  * KIND, either express or implied. See the License for the
  18.  * specific language governing permissions and limitations
  19.  * under the License.
  20.  */
  21. package net.morimekta.providence;

  22. import java.util.concurrent.atomic.AtomicInteger;

  23. /**
  24.  * Base class for handling a call request from a synchronous client.
  25.  */
  26. public abstract class PClient {
  27.     /**
  28.      * Create a base client.
  29.      */
  30.     protected PClient() {
  31.         nextSequenceId = new AtomicInteger(0);
  32.     }

  33.     /**
  34.      * Get the next available sequence ID.
  35.      *
  36.      * @return The sequence ID to use.
  37.      */
  38.     protected int getNextSequenceId() {
  39.         return nextSequenceId.getAndIncrement();
  40.     }

  41.     private AtomicInteger nextSequenceId;
  42. }