-
Hans Moog authored
* Feat: refactored the address * Feat: started adding solidification of transferOutputs * Feat: cleaned up checker code * Feat: going to bed - good night world * Feat: refactored transferoutput package * Fix: fixed a bug from refactoring * Refactor: removed old transferoutputmetadata package * Refactor: started refactoring transfer package * Refactor: refactored transfer/id package * Refactor: moved transfer struct to new package * Refactor: fixed issues after refactor * Refactor: fixed sth * Refactor: continued to move files * Refactor: commit before migration of last refactored files * Refactor: another refactor before move * Refactor: refactor test * Fix: fixed some bugs connected to refactor * Refactor: continued refactor * Refactor: fixed some bugs * Refactor: does it work now? * Feat: added a method to generate a random transferid * Feat: rename transfer to transaction * Refactor: refactor according to new names * Refactor: continued to refactor transaction package * Refactor: moved payload id to payload package * Refactor: moved signatures to transaction package * Refactor: moved signature to transaction * Fix: fixed bug due to refactor * Fix: fixed bugs due to refactor * Refactor: fixed some bugs after refactor * Fix: fixed additional bugs * Fix: bug fix * Refactor: moved signature to signaturescheme package * Fix: fixed signatures test * Fix: fixed bug in tangle * Fix: fixed payloadmetadata test * Fix: fixed payload test * Refactor: moved payloadmetadata to payload package * Fix: fixed some refactor bugs * Fix: fixed a bug due to refactor * Fix: fixed broken test * Refactor: moved approver to payload package * Refactor: moved missingpayload to payload package * Refactor: refactored coloredbalance package * Fix: fixed bug due to refactor * Refactor: moved address signaturescheme to address package * Fix: fixed refactor bug * Feat: added missing outputs to tangle * Fix: fixed issues due to refactor * Refactor: started moving tangle classes to tangle package * Refactor: moved payloadmetadata to tangle * Fix: fixed bugs due to refactor * Refactor: moved TransactionMetadata to tangle package * Refactor: moved some files to tangle * Fix: fixed bug due to refactor * Feat: added TransactionMetadata storage * Fix: fixed some issues * Fix: fixed some issues * Fix: fixed missing release
Hans Moog authored* Feat: refactored the address * Feat: started adding solidification of transferOutputs * Feat: cleaned up checker code * Feat: going to bed - good night world * Feat: refactored transferoutput package * Fix: fixed a bug from refactoring * Refactor: removed old transferoutputmetadata package * Refactor: started refactoring transfer package * Refactor: refactored transfer/id package * Refactor: moved transfer struct to new package * Refactor: fixed issues after refactor * Refactor: fixed sth * Refactor: continued to move files * Refactor: commit before migration of last refactored files * Refactor: another refactor before move * Refactor: refactor test * Fix: fixed some bugs connected to refactor * Refactor: continued refactor * Refactor: fixed some bugs * Refactor: does it work now? * Feat: added a method to generate a random transferid * Feat: rename transfer to transaction * Refactor: refactor according to new names * Refactor: continued to refactor transaction package * Refactor: moved payload id to payload package * Refactor: moved signatures to transaction package * Refactor: moved signature to transaction * Fix: fixed bug due to refactor * Fix: fixed bugs due to refactor * Refactor: fixed some bugs after refactor * Fix: fixed additional bugs * Fix: bug fix * Refactor: moved signature to signaturescheme package * Fix: fixed signatures test * Fix: fixed bug in tangle * Fix: fixed payloadmetadata test * Fix: fixed payload test * Refactor: moved payloadmetadata to payload package * Fix: fixed some refactor bugs * Fix: fixed a bug due to refactor * Fix: fixed broken test * Refactor: moved approver to payload package * Refactor: moved missingpayload to payload package * Refactor: refactored coloredbalance package * Fix: fixed bug due to refactor * Refactor: moved address signaturescheme to address package * Fix: fixed refactor bug * Feat: added missing outputs to tangle * Fix: fixed issues due to refactor * Refactor: started moving tangle classes to tangle package * Refactor: moved payloadmetadata to tangle * Fix: fixed bugs due to refactor * Refactor: moved TransactionMetadata to tangle package * Refactor: moved some files to tangle * Fix: fixed bug due to refactor * Feat: added TransactionMetadata storage * Fix: fixed some issues * Fix: fixed some issues * Fix: fixed missing release
gossip.go 2.46 KiB
package gossip
import (
"fmt"
"net"
"strconv"
"github.com/iotaledger/hive.go/autopeering/peer/service"
"github.com/iotaledger/hive.go/logger"
"github.com/iotaledger/goshimmer/packages/binary/tangle/model/message"
gp "github.com/iotaledger/goshimmer/packages/gossip"
"github.com/iotaledger/goshimmer/packages/gossip/server"
"github.com/iotaledger/goshimmer/plugins/autopeering/local"
"github.com/iotaledger/goshimmer/plugins/config"
"github.com/iotaledger/goshimmer/plugins/tangle"
)
var (
log *logger.Logger
mgr *gp.Manager
srv *server.TCP
)
func configureGossip() {
lPeer := local.GetInstance()
peeringAddr := lPeer.Services().Get(service.PeeringKey)
external, _, err := net.SplitHostPort(peeringAddr.String())
if err != nil {
panic(err)
}
// announce the gossip service
gossipPort := strconv.Itoa(config.Node.GetInt(GOSSIP_PORT))
err = lPeer.UpdateService(service.GossipKey, "tcp", net.JoinHostPort(external, gossipPort))
if err != nil {
log.Fatalf("could not update services: %s", err)
}
mgr = gp.NewManager(lPeer, getTransaction, log)
}
func start(shutdownSignal <-chan struct{}) {
defer log.Info("Stopping " + name + " ... done")
lPeer := local.GetInstance()
// use the port of the gossip service
gossipAddr := lPeer.Services().Get(service.GossipKey)
_, gossipPort, err := net.SplitHostPort(gossipAddr.String())
if err != nil {
panic(err)
}
// resolve the bind address
address := net.JoinHostPort(config.Node.GetString(local.CFG_BIND), gossipPort)
localAddr, err := net.ResolveTCPAddr(gossipAddr.Network(), address)
if err != nil {
log.Fatalf("Error resolving %s: %v", local.CFG_BIND, err)
}
listener, err := net.ListenTCP(gossipAddr.Network(), localAddr)
if err != nil {
log.Fatalf("Error listening: %v", err)
}
defer listener.Close()
srv = server.ServeTCP(lPeer, listener, log)
defer srv.Close()
mgr.Start(srv)
defer mgr.Close()
log.Infof("%s started: Address=%s/%s", name, gossipAddr.String(), gossipAddr.Network())
<-shutdownSignal
log.Info("Stopping " + name + " ...")
}
func getTransaction(transactionId message.Id) (bytes []byte, err error) {
log.Debugw("get tx from db", "id", transactionId.String())
if !tangle.Instance.GetTransaction(transactionId).Consume(func(transaction *message.Transaction) {
bytes = transaction.Bytes()
}) {
err = fmt.Errorf("transaction not found: hash=%s", transactionId)
}
return
}
func GetAllNeighbors() []*gp.Neighbor {
if mgr == nil {
return nil
}
return mgr.GetAllNeighbors()
}