Class COUNTER


  • 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
      • local_addr

        protected Address local_addr
      • 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
      • counters

        protected final java.util.concurrent.ConcurrentMap<java.lang.String,​COUNTER.VersionedValue> counters
    • Constructor Detail

      • COUNTER

        public COUNTER()
    • Method Detail

      • getBypassBundling

        public boolean getBypassBundling()
      • setBypassBundling

        public void setBypassBundling​(boolean bypass_bundling)
      • getAddress

        public java.lang.String getAddress()
      • getView

        public java.lang.String getView()
      • getBackupCoords

        public java.lang.String getBackupCoords()
      • getOrCreateCounter

        public Counter getOrCreateCounter​(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
      • 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 value,
                                     long version)
      • sendCounterNotFoundExceptionResponse

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

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

        protected static Buffer responseToBuffer​(COUNTER.Response rsp)
                                          throws java.lang.Exception
        Throws:
        java.lang.Exception
      • streamableToBuffer

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

        protected static Streamable streamableFromBuffer​(byte[] buf,
                                                         int offset,
                                                         int length)
                                                  throws java.lang.Exception
        Throws:
        java.lang.Exception
      • requestFromBuffer

        protected static final COUNTER.Request requestFromBuffer​(byte[] buf,
                                                                 int offset,
                                                                 int length)
                                                          throws java.lang.Exception
        Throws:
        java.lang.Exception
      • responseFromBuffer

        protected static final COUNTER.Response responseFromBuffer​(byte[] buf,
                                                                   int offset,
                                                                   int length)
                                                            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)