org.eclipse.viatra.query.runtime.rete.network

## Class CommunicationGroup

- java.lang.Object
- - org.eclipse.viatra.query.runtime.rete.network.CommunicationGroup

- All Implemented Interfaces:
    java.lang.Comparable<CommunicationGroup>
  Direct Known Subclasses:
    CommunicationGroup.Recursive, CommunicationGroup.Singleton

      public abstract class CommunicationGroup
      extends java.lang.Object
      implements java.lang.Comparable<CommunicationGroup>

  A communication group represents a set of nodes in the communication graph that form a strongly connected component.
  Since:
    1.6

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `CommunicationGroup.Recursive` A communication group representing either (1) a single node where the node is a monotonicity aware one (2) a set of nodes that form an SCC
    `static class` | `CommunicationGroup.Singleton` A communication group containing only a single node with a single default mailbox.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `identifier` May be changed during bumping in `CommunicationTracker.registerDependency`
    `boolean` | `isEnqueued` Marker for the `CommunicationTracker`
    `protected Node` | `representative`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CommunicationGroup(Node representative, int identifier)`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract void` | `addRederivable(RederivableNode node)`
    `int` | `compareTo(CommunicationGroup that)`
    `abstract void` | `deliverMessages()`
    `boolean` | `equals(java.lang.Object obj)`
    `abstract java.util.Map<MessageKind,java.util.Collection<Mailbox>>` | `getMailboxes()`
    `abstract java.util.Collection<RederivableNode>` | `getRederivables()`
    `Node` | `getRepresentative()`
    `int` | `hashCode()`
    `abstract boolean` | `isEmpty()`
    `abstract void` | `notifyHasMessage(Mailbox mailbox, MessageKind kind)`
    `abstract void` | `notifyLostAllMessages(Mailbox mailbox, MessageKind kind)`
    `abstract void` | `removeRederivable(RederivableNode node)`
    `java.lang.String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### isEnqueued

          public boolean isEnqueued

      Marker for the `CommunicationTracker`

    - #### representative

          protected final Node representative

    - #### identifier

          protected int identifier

      May be changed during bumping in `CommunicationTracker.registerDependency`

  - ### Constructor Detail

    - #### CommunicationGroup

          public CommunicationGroup(Node representative,
                                    int identifier)

  - ### Method Detail

    - #### deliverMessages

          public abstract void deliverMessages()

    - #### getRepresentative

          public Node getRepresentative()

    - #### isEmpty

          public abstract boolean isEmpty()

    - #### notifyLostAllMessages

          public abstract void notifyLostAllMessages(Mailbox mailbox,
                                                     MessageKind kind)

    - #### notifyHasMessage

          public abstract void notifyHasMessage(Mailbox mailbox,
                                                MessageKind kind)

    - #### addRederivable

          public abstract void addRederivable(RederivableNode node)

    - #### removeRederivable

          public abstract void removeRederivable(RederivableNode node)

    - #### getMailboxes

          public abstract java.util.Map<MessageKind,java.util.Collection<Mailbox>> getMailboxes()

    - #### getRederivables

          public abstract java.util.Collection<RederivableNode> getRederivables()

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### equals

          public boolean equals(java.lang.Object obj)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### compareTo

          public int compareTo(CommunicationGroup that)

      Specified by:
        `compareTo` in interface `java.lang.Comparable<CommunicationGroup>`