Browse Source

:wrench: Add NetworkServices

Ettore Di Giacinto 3 years ago
parent
commit
b38bfed08e
3 changed files with 15 additions and 0 deletions
  1. 3 0
      pkg/edgevpn/config.go
  2. 5 0
      pkg/edgevpn/edgevpn.go
  3. 7 0
      pkg/edgevpn/options.go

+ 3 - 0
pkg/edgevpn/config.go

@@ -40,6 +40,7 @@ type Config struct {
 	MTU              int
 	DeviceType       water.DeviceType
 	ServiceDiscovery []ServiceDiscovery
+	NetworkServices  []NetworkService
 	Logger           log.StandardLogger
 
 	SealKeyLength int
@@ -57,6 +58,8 @@ type Config struct {
 	DiscoveryBootstrapPeers                                         discovery.AddrList
 }
 
+type NetworkService func(context.Context, *EdgeVPN, *blockchain.Ledger) error
+
 type StreamHandler func(stream network.Stream)
 
 type Handler func(*hub.Message) error

+ 5 - 0
pkg/edgevpn/edgevpn.go

@@ -100,6 +100,11 @@ func (e *EdgeVPN) Join() error {
 	// Send periodically messages to the channel with our blockchain content
 	ledger.Syncronizer(context.Background(), e.config.LedgerSyncronizationTime)
 
+	// Start eventual declared NetworkServices
+	for _, s := range e.config.NetworkServices {
+		go s(context.Background(), e, ledger)
+	}
+
 	return nil
 }
 

+ 7 - 0
pkg/edgevpn/options.go

@@ -32,6 +32,13 @@ func WithLibp2pAdditionalOptions(i ...libp2p.Option) func(cfg *Config) error {
 	}
 }
 
+func WithNetworkService(ns ...NetworkService) func(cfg *Config) error {
+	return func(cfg *Config) error {
+		cfg.NetworkServices = append(cfg.NetworkServices, ns...)
+		return nil
+	}
+}
+
 func WithInterface(i *water.Interface) func(cfg *Config) error {
 	return func(cfg *Config) error {
 		cfg.Interface = i