mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-11-24 06:25:55 +00:00
45 lines
1.3 KiB
Go
45 lines
1.3 KiB
Go
package common
|
|
|
|
import (
|
|
peerpkg "github.com/kaspanet/kaspad/app/protocol/peer"
|
|
routerpkg "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router"
|
|
"os"
|
|
"sync"
|
|
"time"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
// DefaultTimeout is the default duration to wait for enqueuing/dequeuing
|
|
// to/from routes.
|
|
const DefaultTimeout = 120 * time.Second
|
|
|
|
// ErrPeerWithSameIDExists signifies that a peer with the same ID already exist.
|
|
var ErrPeerWithSameIDExists = errors.New("ready peer with the same ID already exists")
|
|
|
|
type flowExecuteFunc func(peer *peerpkg.Peer)
|
|
|
|
// Flow is a a data structure that is used in order to associate a p2p flow to some route in a router.
|
|
type Flow struct {
|
|
Name string
|
|
ExecuteFunc flowExecuteFunc
|
|
}
|
|
|
|
// FlowInitializeFunc is a function that is used in order to initialize a flow
|
|
type FlowInitializeFunc func(route *routerpkg.Route, peer *peerpkg.Peer) error
|
|
|
|
var isDNSSeeder bool
|
|
var isDNSSeederOnce sync.Once
|
|
|
|
// IsDNSSeeder returns whether this node supports a DNS seeder. If this is the case, the node
|
|
// doesn't need to actually stay synced, and is mainly used for scanning the p2p network.
|
|
func IsDNSSeeder() bool {
|
|
isDNSSeederOnce.Do(func() {
|
|
isDNSSeederEnv := os.Getenv("DNSSEEDER")
|
|
if isDNSSeederEnv != "" {
|
|
isDNSSeeder = true
|
|
}
|
|
})
|
|
return isDNSSeeder
|
|
}
|