Class ClusterImpl

java.lang.Object
org.teamapps.cluster.core.ClusterImpl
All Implemented Interfaces:
Cluster, ClusterHandler, org.teamapps.protocol.schema.ClusterServiceRegistry

public class ClusterImpl
extends java.lang.Object
implements Cluster, ClusterHandler
  • Constructor Details

    • ClusterImpl

      public ClusterImpl​(java.lang.String clusterSecret, java.lang.String nodeId, boolean leader, HostAddress... knownNodes) throws java.io.IOException
      Throws:
      java.io.IOException
    • ClusterImpl

      public ClusterImpl​(java.lang.String clusterSecret, java.lang.String nodeId, HostAddress externalAddress, boolean leader, HostAddress... knownNodes) throws java.io.IOException
      Throws:
      java.io.IOException
    • ClusterImpl

      public ClusterImpl​(java.lang.String clusterSecret, java.lang.String nodeId, HostAddress externalAddress, HostAddress bindToAddress, boolean leader, HostAddress... knownNodes) throws java.io.IOException
      Throws:
      java.io.IOException
    • ClusterImpl

      public ClusterImpl​(java.lang.String clusterSecret, java.io.File tempDir, java.lang.String nodeId, HostAddress externalAddress, HostAddress bindToAddress, boolean leader, HostAddress... knownNodes)
  • Method Details

    • block

      public void block()
    • getClusterInfo

      public ClusterInfo getClusterInfo()
      Specified by:
      getClusterInfo in interface ClusterHandler
    • handleNodeConnected

      public void handleNodeConnected​(RemoteNode node, ClusterInfo clusterInfo)
      Specified by:
      handleNodeConnected in interface ClusterHandler
    • handleNodeDisconnected

      public void handleNodeDisconnected​(RemoteNode node)
      Specified by:
      handleNodeDisconnected in interface ClusterHandler
    • handleClusterUpdate

      public void handleClusterUpdate()
      Specified by:
      handleClusterUpdate in interface ClusterHandler
    • addModelCollection

      public void addModelCollection​(org.teamapps.protocol.schema.ModelCollection modelCollection)
      Specified by:
      addModelCollection in interface Cluster
    • getLocalNode

      public LocalNode getLocalNode()
      Specified by:
      getLocalNode in interface Cluster
    • getRemoteNodes

      public java.util.List<RemoteNode> getRemoteNodes()
      Specified by:
      getRemoteNodes in interface Cluster
    • addRemoteNode

      public void addRemoteNode​(RemoteNode remoteNode)
      Specified by:
      addRemoteNode in interface Cluster
    • getRemoteNode

      public RemoteNode getRemoteNode​(java.lang.String nodeId)
      Specified by:
      getRemoteNode in interface Cluster
    • registerService

      public void registerService​(org.teamapps.protocol.schema.AbstractClusterService clusterService)
      Specified by:
      registerService in interface org.teamapps.protocol.schema.ClusterServiceRegistry
    • isServiceAvailable

      public boolean isServiceAvailable​(java.lang.String serviceName)
      Specified by:
      isServiceAvailable in interface Cluster
      Specified by:
      isServiceAvailable in interface org.teamapps.protocol.schema.ClusterServiceRegistry
    • getRandomServiceProvider

      public RemoteNode getRandomServiceProvider​(java.lang.String serviceName)
    • executeServiceMethod

      public <REQUEST extends org.teamapps.protocol.schema.MessageObject,​ RESPONSE extends org.teamapps.protocol.schema.MessageObject> RESPONSE executeServiceMethod​(java.lang.String serviceName, java.lang.String method, REQUEST request, org.teamapps.protocol.schema.PojoObjectDecoder<RESPONSE> responseDecoder)
      Specified by:
      executeServiceMethod in interface org.teamapps.protocol.schema.ClusterServiceRegistry
    • sendMessage

      public void sendMessage​(org.teamapps.protocol.schema.MessageObject message, java.lang.String nodeId)
      Specified by:
      sendMessage in interface Cluster
    • sendTopicMessage

      public void sendTopicMessage​(java.lang.String topic, org.teamapps.protocol.schema.MessageObject message)
      Specified by:
      sendTopicMessage in interface Cluster
    • handleMessage

      public void handleMessage​(org.teamapps.protocol.schema.MessageObject message, RemoteNode node)
      Specified by:
      handleMessage in interface ClusterHandler
    • handleTopicMessage

      public void handleTopicMessage​(java.lang.String topic, org.teamapps.protocol.schema.MessageObject message, RemoteNode node)
      Specified by:
      handleTopicMessage in interface ClusterHandler
    • registerMessageHandler

      public <MESSAGE extends org.teamapps.protocol.schema.MessageObject> void registerMessageHandler​(MessageHandler<MESSAGE> messageHandler, org.teamapps.protocol.schema.PojoObjectDecoder<MESSAGE> messageDecoder)
      Specified by:
      registerMessageHandler in interface Cluster
    • registerTopicHandler

      public <MESSAGE extends org.teamapps.protocol.schema.MessageObject> void registerTopicHandler​(java.lang.String topic, MessageHandler<MESSAGE> messageHandler, org.teamapps.protocol.schema.PojoObjectDecoder<MESSAGE> messageDecoder)
      Specified by:
      registerTopicHandler in interface Cluster
    • handleClusterServiceMethod

      public org.teamapps.protocol.schema.MessageObject handleClusterServiceMethod​(java.lang.String service, java.lang.String serviceMethod, org.teamapps.protocol.schema.MessageObject requestData)
      Specified by:
      handleClusterServiceMethod in interface ClusterHandler
    • shutDown

      public void shutDown()
      Specified by:
      shutDown in interface Cluster