Class COUNTER

  • All Implemented Interfaces:
    Lifecycle

    public class COUNTER
    extends Protocol
    Protocol which is used by CounterService to provide a distributed atomic counter
    Since:
    3.0.0
    Author:
    Bela Ban
    • Field Detail

      • bypass_bundling

        protected boolean bypass_bundling
      • timeout

        protected long timeout
      • reconciliation_timeout

        protected long reconciliation_timeout
      • num_backups

        protected int num_backups
      • discard_requests

        protected boolean discard_requests
        Set to true during reconciliation process, will cause all requests to be discarded
      • view

        protected View view
      • coord

        protected Address coord
        The address of the cluster coordinator. Updated on view changes
      • backup_coords

        protected java.util.List<Address> backup_coords
        Backup coordinators. Only created if num_backups > 0 and coord=true
      • reconciliation_task_future

        protected java.util.concurrent.Future<?> reconciliation_task_future
      • pending_requests

        protected final java.util.Map<Owner,​org.jgroups.protocols.COUNTER.RequestCompletableFuture<?>> pending_requests
    • Constructor Detail

      • COUNTER

        public COUNTER()
    • Method Detail

      • getBypassBundling

        public boolean getBypassBundling()
      • setBypassBundling

        public COUNTER setBypassBundling​(boolean bypass_bundling)
      • getNumberOfBackups

        public int getNumberOfBackups()
      • setNumberOfBackups

        public COUNTER setNumberOfBackups​(int num_backups)
      • getView

        public java.lang.String getView()
      • getBackupCoords

        public java.lang.String getBackupCoords()
      • init

        public void init()
                  throws java.lang.Exception
        Description copied from class: Protocol
        Called after a protocol has been created and before the protocol is started. Attributes are already set. Other protocols are not yet connected and events cannot yet be sent.
        Specified by:
        init in interface Lifecycle
        Overrides:
        init in class Protocol
        Throws:
        java.lang.Exception - Thrown if protocol cannot be initialized successfully. This will cause the ProtocolStack to fail, so the the channel constructor will throw an exception
      • getOrCreateCounter

        @Deprecated
        public Counter getOrCreateCounter​(java.lang.String name,
                                          long initial_value)
        Deprecated.
      • getOrCreateAsyncCounter

        public java.util.concurrent.CompletionStage<AsyncCounter> getOrCreateAsyncCounter​(java.lang.String name,
                                                                                          long initial_value)
      • deleteCounter

        public void deleteCounter​(java.lang.String name)
        Sent asynchronously - we don't wait for an ack
      • down

        public java.lang.Object down​(Event evt)
        Description copied from class: Protocol
        An event is to be sent down the stack. A protocol may want to examine its type and perform some action on it, depending on the event's type. If the event is a message MSG, then the protocol may need to add a header to it (or do nothing at all) before sending it down the stack using down_prot.down().
        Overrides:
        down in class Protocol
      • up

        public java.lang.Object up​(Event evt)
        Description copied from class: Protocol
        An event was received from the protocol below. Usually the current protocol will want to examine the event type and - depending on its type - perform some computation (e.g. removing headers from a MSG event type, or updating the internal membership list when receiving a VIEW_CHANGE event). Finally, the event is either a) discarded, or b) an event is sent down the stack using down_prot.down() or c) the event (or another event) is sent up the stack using up_prot.up().
        Overrides:
        up in class Protocol
      • up

        public java.lang.Object up​(Message msg)
        Description copied from class: Protocol
        A single message was received. Protocols may examine the message and do something (e.g. add a header) with it before passing it up.
        Overrides:
        up in class Protocol
      • handleResponse

        protected void handleResponse​(org.jgroups.protocols.COUNTER.Response rsp,
                                      Address sender)
      • printCounters

        public java.lang.String printCounters()
      • dumpPendingRequests

        public java.lang.String dumpPendingRequests()
      • handleView

        protected void handleView​(View view)
      • getOwner

        protected Owner getOwner()
      • updateBackups

        protected void updateBackups​(java.lang.String name,
                                     long[] versionedValue)
      • sendResponse

        protected void sendResponse​(Address dest,
                                    org.jgroups.protocols.COUNTER.Response<?> rsp)
      • sendCounterNotFoundExceptionResponse

        protected void sendCounterNotFoundExceptionResponse​(Address dest,
                                                            Owner owner,
                                                            java.lang.String counter_name)
      • requestToBuffer

        protected static ByteArray requestToBuffer​(COUNTER.Request req)
                                            throws java.lang.Exception
        Throws:
        java.lang.Exception
      • responseToBuffer

        protected static ByteArray responseToBuffer​(org.jgroups.protocols.COUNTER.Response<?> rsp)
                                             throws java.lang.Exception
        Throws:
        java.lang.Exception
      • streamableToBuffer

        protected static ByteArray streamableToBuffer​(byte req_or_rsp,
                                                      byte type,
                                                      Streamable obj)
                                               throws java.lang.Exception
        Throws:
        java.lang.Exception
      • requestFromDataInput

        protected static COUNTER.Request requestFromDataInput​(java.io.DataInput in)
                                                       throws java.lang.Exception
        Throws:
        java.lang.Exception
      • responseFromDataInput

        protected static org.jgroups.protocols.COUNTER.Response<?> responseFromDataInput​(java.io.DataInput in)
                                                                                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • startReconciliationTask

        protected void startReconciliationTask()
      • stopReconciliationTask

        protected void stopReconciliationTask()
      • writeReconciliation

        protected static void writeReconciliation​(java.io.DataOutput out,
                                                  java.lang.String[] names,
                                                  long[] values,
                                                  long[] versions)
                                           throws java.io.IOException
        Throws:
        java.io.IOException
      • readReconciliationNames

        protected static java.lang.String[] readReconciliationNames​(java.io.DataInput in,
                                                                    int len)
                                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • readReconciliationLongs

        protected static long[] readReconciliationLongs​(java.io.DataInput in,
                                                        int len)
                                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • dump

        protected static java.lang.String dump​(java.lang.String[] names,
                                               long[] values,
                                               long[] versions)