github.com/GeniusesGroup/libgo@v0.0.0-20220929090155-5ff932cb408e/protocol/node.go (about)

     1  /* For license and copyright information please see LEGAL file in repository */
     2  
     3  package protocol
     4  
     5  // Cluster store application nodes data and ready to return in many ways.
     6  type Cluster interface {
     7  	LocalNode() ApplicationNode
     8  	ReplicatedLocalNode() []ApplicationNode
     9  
    10  	GetReplicatedNodes(node ApplicationNode) []ApplicationNode
    11  	GetNodeByID(nodeID uint64) ApplicationNode
    12  	GetNodeByObjectID(id [32]byte) (node ApplicationNode, err Error)
    13  }
    14  
    15  type ApplicationNode interface {
    16  	Type() NodeType
    17  	ID() [16]byte           // as InstanceID
    18  	DataCenterID() [16]byte // orgID
    19  	ThingID() [16]byte
    20  	ReplicationID() uint8
    21  	StorageCapacity() uint64 // In bytes, Max 16EB(Exabyte) that more enough for one node capacity. 0 means service only node.
    22  	Conn() Connection
    23  	Status() ApplicationState
    24  	Stats()
    25  }
    26  
    27  type NodeType uint8
    28  
    29  const (
    30  	Node_Unset NodeType = iota
    31  	Node_Cloud
    32  	Node_Edge
    33  )