mirror of
https://github.com/LBRYFoundation/reflector.go.git
synced 2025-08-23 17:27:25 +00:00
-Added travis support -updated travis to analyze code beneath the root. -refactored upload.go to fix travis errors. -gocyclo should ignore test files. $GOFILES needed to be adjusted. -fix rows.Close() ignoring error. Created func to handle so defer can be used when needed also. -fixed ignored errors. -fixed unit test that was not passing correctly to anonymous function. -fixed govet error for passing param inside go func. -removed returned error, in favor of logging instead. -added error logging for ignored error. -fixed potential race conditions. -removed unused append -fixed time usage to align with go standards. -removed unused variables -made changes for code review. -code comments for exported functions. -Documented bitmap.go and insert into contact list. -Documented dht, message, bootstrap -Fixed comment typos -Documented message,node, routing_table, testing in DHT package. -Documented server, client, prism, server and shared in peer and reflector packages. -Documented the stores in Store package. -made defer adjustments inline and deleted the separate function. -adjusted method in upload to take the only parameter it requires.
62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package reflector
|
|
|
|
import (
|
|
"github.com/lbryio/lbry.go/stopOnce"
|
|
"github.com/lbryio/reflector.go/cluster"
|
|
"github.com/lbryio/reflector.go/dht"
|
|
"github.com/lbryio/reflector.go/peer"
|
|
"github.com/lbryio/reflector.go/store"
|
|
)
|
|
|
|
// Prism is the root instance of the application and houses the DHT, Peer Server, Reflector Server, and Cluster.
|
|
type Prism struct {
|
|
dht *dht.DHT
|
|
peer *peer.Server
|
|
reflector *Server
|
|
cluster *cluster.Cluster
|
|
|
|
stop *stopOnce.Stopper
|
|
}
|
|
|
|
// NewPrism returns an initialized Prism instance pointer.
|
|
func NewPrism(store store.BlobStore, clusterSeedAddr string) *Prism {
|
|
d, err := dht.New(nil)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return &Prism{
|
|
dht: d,
|
|
peer: peer.NewServer(store),
|
|
reflector: NewServer(store),
|
|
cluster: cluster.New(cluster.DefaultClusterPort, clusterSeedAddr),
|
|
stop: stopOnce.New(),
|
|
}
|
|
}
|
|
|
|
// Connect starts the components of the application.
|
|
func (p *Prism) Connect() error {
|
|
err := p.dht.Start()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = p.cluster.Connect()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// start peer
|
|
|
|
// start reflector
|
|
|
|
return nil
|
|
}
|
|
|
|
// Shutdown gracefully shuts down the different prism components before exiting.
|
|
func (p *Prism) Shutdown() {
|
|
p.stop.StopAndWait()
|
|
p.reflector.Shutdown()
|
|
p.peer.Shutdown()
|
|
p.cluster.Shutdown()
|
|
p.dht.Shutdown()
|
|
}
|