// Package network is for creating internetworks package network import ( "time" "github.com/micro/go-micro/client" "github.com/micro/go-micro/server" ) var ( // DefaultName is default network name DefaultName = "go.micro" // DefaultAddress is default network address DefaultAddress = ":0" // ResolveTime defines time interval to periodically resolve network nodes ResolveTime = 1 * time.Minute // AnnounceTime defines time interval to periodically announce node neighbours AnnounceTime = 30 * time.Second ) // Node is network node type Node interface { // Id is node id Id() string // Address is node bind address Address() string // Neighbourhood is node neighbourhood Neighbourhood() []Node // Network is the network node is in Network() Network } // Network is micro network type Network interface { // Node is network node Node // Options returns the network options Options() Options // Name of the network Name() string // Connect starts the resolver and tunnel server Connect() error // Nodes returns list of network nodes Nodes() []Node // Close stops the tunnel and resolving Close() error // Client is micro client Client() client.Client // Server is micro server Server() server.Server } // NewNetwork returns a new network interface func NewNetwork(opts ...Option) Network { return newNetwork(opts...) }