Class BaseBundler

    • Field Detail

      • msgs

        protected final java.util.Map<Address,​java.util.List<Message>> msgs
        Keys are destinations, values are lists of Messages
      • FUNC

        protected final java.util.function.Function<Address,​java.util.List<Message>> FUNC
      • transport

        protected TP transport
      • lock

        protected final java.util.concurrent.locks.ReentrantLock lock
      • count

        protected long count
      • msg_stats

        protected MsgStats msg_stats
      • log

        protected Log log
      • max_size

        protected int max_size
        Maximum number of bytes for messages to be queued until they are sent. This value needs to be smaller than the largest datagram packet size in case of UDP
      • capacity

        protected int capacity
    • Constructor Detail

      • BaseBundler

        public BaseBundler()
    • Method Detail

      • printBuffers

        public java.lang.String printBuffers()
      • getCapacity

        public int getCapacity()
        Description copied from interface: Bundler
        If the bundler implementation supports a capacity (e.g. RingBufferBundler, then return it, else return -1
        Specified by:
        getCapacity in interface Bundler
      • setCapacity

        public Bundler setCapacity​(int c)
      • getMaxSize

        public int getMaxSize()
        Description copied from interface: Bundler
        Maximum number of bytes for messages to be queued until they are sent
        Specified by:
        getMaxSize in interface Bundler
      • init

        public void init​(TP transport)
        Description copied from interface: Bundler
        Called after creation of the bundler
        Specified by:
        init in interface Bundler
        Parameters:
        transport - the transport, for further reference
      • resetStats

        public void resetStats()
        Specified by:
        resetStats in interface Bundler
      • stop

        public void stop()
        Specified by:
        stop in interface Bundler
      • send

        public void send​(Message msg)
                  throws java.lang.Exception
        Specified by:
        send in interface Bundler
        Throws:
        java.lang.Exception
      • size

        public int size()
        Returns the total number of messages in the hashmap
        Specified by:
        size in interface Bundler
      • getQueueSize

        public int getQueueSize()
        Description copied from interface: Bundler
        If the bundler has a queue and it should be managed by a queuing discipline (like Random Early Detection), then return the number of elements in the queue, else -1. In the latter case, the queue won't be managed.
        This method needs to be fast as it might get called on every message to be sent.
        Specified by:
        getQueueSize in interface Bundler
      • sendBundledMessages

        protected void sendBundledMessages()
        Sends all messages in the map. Messages for the same destination are bundled into a message list. The map will be cleared when done.
      • loopbackUnlessDontLoopbackIsSet

        protected void loopbackUnlessDontLoopbackIsSet​(Message msg)
      • loopback

        protected void loopback​(Address dest,
                                Address sender,
                                java.lang.Iterable<Message> list,
                                int size)
      • addMessage

        protected void addMessage​(Message msg,
                                  int size)