github.com/geniusesgroup/libgo@v0.0.0-20220713101832-828057a9d3d4/ganjine/cluster.go (about)

     1  /* For license and copyright information please see LEGAL file in repository */
     2  
     3  package ganjine
     4  
     5  import (
     6  	"../object"
     7  	"../protocol"
     8  )
     9  
    10  // Cluster is the base datastore object that use by other part of app and platforms!
    11  // Cluster implements protocol.ObjectDirectory && protocol.
    12  // Each node in cluster and SDK in authorized app must have it to work probably.
    13  // First node of cluster is cordiantor of cluster.
    14  type Cluster struct {
    15  	State int
    16  
    17  	objects object.Directory        // Distributed object storage
    18  	files   protocol.FileDirectory  // Distributed file storage
    19  	records protocol.StorageRecords // Distributed records storage
    20  
    21  	TransactionManager TransactionManager
    22  }
    23  
    24  // Cluster State
    25  const (
    26  	ClusterStateStop int = iota
    27  	ClusterStateRunning
    28  	ClusterStateStopping
    29  	ClusterStateStarting // plan to start
    30  )
    31  
    32  func (c *Cluster) LocalObjects() protocol.StorageObjects      { return }
    33  func (c *Cluster) LocalObjectsCache() protocol.StorageObjects { return }
    34  func (c *Cluster) LocalFiles() protocol.FileDirectory         { return }
    35  func (c *Cluster) LocalRecords() protocol.StorageRecords      { return }
    36  func (c *Cluster) LocalRecordsCache() protocol.StorageRecords { return }
    37  
    38  func (c *Cluster) Objects() protocol.Objects        { return &c.objects }
    39  func (c *Cluster) Files() protocol.FileDirectory    { return c.files }
    40  func (c *Cluster) Records() protocol.StorageRecords { return c.records }
    41  
    42  // Init initialize an exiting cluster to get or make a cluster!
    43  func (c *Cluster) Init() (err protocol.Error) {
    44  	registerServices()
    45  	object.Init()
    46  
    47  	c.TransactionManager.init()
    48  
    49  	return
    50  }
    51  
    52  // Shutdown the cluster!
    53  func (c *Cluster) Shutdown() (err protocol.Error) {
    54  	// Close Indexes
    55  	// Notify other nodes
    56  	return
    57  }