service: config load only on start, not init phase #110
| @@ -29,10 +29,10 @@ type record struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| type memory struct { | type memory struct { | ||||||
|  | 	sync.RWMutex | ||||||
| 	records  map[string]services | 	records  map[string]services | ||||||
| 	watchers map[string]*watcher | 	watchers map[string]*watcher | ||||||
| 	opts     Options | 	opts     Options | ||||||
| 	sync.RWMutex |  | ||||||
| } | } | ||||||
|  |  | ||||||
| // services is a KV map with service name as the key and a map of records as the value | // services is a KV map with service name as the key and a map of records as the value | ||||||
|   | |||||||
| @@ -12,10 +12,9 @@ import ( | |||||||
|  |  | ||||||
| // Resolver is a DNS network resolve | // Resolver is a DNS network resolve | ||||||
| type Resolver struct { | type Resolver struct { | ||||||
| 	goresolver *net.Resolver |  | ||||||
| 	// Address of resolver to use |  | ||||||
| 	Address string |  | ||||||
| 	sync.RWMutex | 	sync.RWMutex | ||||||
|  | 	goresolver *net.Resolver | ||||||
|  | 	Address    string | ||||||
| } | } | ||||||
|  |  | ||||||
| // Resolve tries to resolve endpoint address | // Resolve tries to resolve endpoint address | ||||||
| @@ -47,7 +46,7 @@ func (r *Resolver) Resolve(name string) ([]*resolver.Record, error) { | |||||||
| 	if goresolver == nil { | 	if goresolver == nil { | ||||||
| 		r.Lock() | 		r.Lock() | ||||||
| 		r.goresolver = &net.Resolver{ | 		r.goresolver = &net.Resolver{ | ||||||
| 			Dial: func(ctx context.Context, network, address string) (net.Conn, error) { | 			Dial: func(ctx context.Context, _ string, _ string) (net.Conn, error) { | ||||||
| 				d := net.Dialer{ | 				d := net.Dialer{ | ||||||
| 					Timeout: time.Millisecond * time.Duration(100), | 					Timeout: time.Millisecond * time.Duration(100), | ||||||
| 				} | 				} | ||||||
|   | |||||||
| @@ -36,11 +36,11 @@ type handler struct { | |||||||
| type subscriber struct { | type subscriber struct { | ||||||
| 	typ        reflect.Type | 	typ        reflect.Type | ||||||
| 	subscriber interface{} | 	subscriber interface{} | ||||||
| 	rcvr       reflect.Value |  | ||||||
| 	topic      string | 	topic      string | ||||||
| 	endpoints  []*register.Endpoint | 	endpoints  []*register.Endpoint | ||||||
| 	handlers   []*handler | 	handlers   []*handler | ||||||
| 	opts       SubscriberOptions | 	opts       SubscriberOptions | ||||||
|  | 	rcvr       reflect.Value | ||||||
| } | } | ||||||
|  |  | ||||||
| // Is this an exported - upper case - name? | // Is this an exported - upper case - name? | ||||||
|   | |||||||
| @@ -73,9 +73,8 @@ func RegisterSubscriber(topic string, s server.Server, h interface{}, opts ...se | |||||||
| } | } | ||||||
|  |  | ||||||
| type service struct { | type service struct { | ||||||
| 	opts Options |  | ||||||
| 	sync.RWMutex | 	sync.RWMutex | ||||||
| 	//	once sync.Once | 	opts Options | ||||||
| } | } | ||||||
|  |  | ||||||
| // NewService creates and returns a new Service based on the packages within. | // NewService creates and returns a new Service based on the packages within. | ||||||
| @@ -108,11 +107,6 @@ func (s *service) Init(opts ...Option) error { | |||||||
| 		if err = cfg.Init(config.Context(cfg.Options().Context)); err != nil { | 		if err = cfg.Init(config.Context(cfg.Options().Context)); err != nil { | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if err = cfg.Load(cfg.Options().Context); err != nil { |  | ||||||
| 			return err |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	for _, log := range s.opts.Loggers { | 	for _, log := range s.opts.Loggers { | ||||||
|   | |||||||
| @@ -6,9 +6,9 @@ import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| type memorySync struct { | type memorySync struct { | ||||||
|  | 	mtx     gosync.RWMutex | ||||||
| 	locks   map[string]*memoryLock | 	locks   map[string]*memoryLock | ||||||
| 	options Options | 	options Options | ||||||
| 	mtx     gosync.RWMutex |  | ||||||
| } | } | ||||||
|  |  | ||||||
| type memoryLock struct { | type memoryLock struct { | ||||||
|   | |||||||
| @@ -10,16 +10,16 @@ import ( | |||||||
|  |  | ||||||
| // Buffer is ring buffer | // Buffer is ring buffer | ||||||
| type Buffer struct { | type Buffer struct { | ||||||
|  | 	sync.RWMutex | ||||||
| 	streams map[string]*Stream | 	streams map[string]*Stream | ||||||
| 	vals    []*Entry | 	vals    []*Entry | ||||||
| 	size    int | 	size    int | ||||||
| 	sync.RWMutex |  | ||||||
| } | } | ||||||
|  |  | ||||||
| // Entry is ring buffer data entry | // Entry is ring buffer data entry | ||||||
| type Entry struct { | type Entry struct { | ||||||
| 	Value     interface{} |  | ||||||
| 	Timestamp time.Time | 	Timestamp time.Time | ||||||
|  | 	Value     interface{} | ||||||
| } | } | ||||||
|  |  | ||||||
| // Stream is used to stream the buffer | // Stream is used to stream the buffer | ||||||
|   | |||||||
| @@ -6,8 +6,8 @@ import ( | |||||||
|  |  | ||||||
| // Pool holds the socket pool | // Pool holds the socket pool | ||||||
| type Pool struct { | type Pool struct { | ||||||
| 	pool map[string]*Socket |  | ||||||
| 	sync.RWMutex | 	sync.RWMutex | ||||||
|  | 	pool map[string]*Socket | ||||||
| } | } | ||||||
|  |  | ||||||
| // Get socket from pool | // Get socket from pool | ||||||
|   | |||||||
| @@ -20,10 +20,10 @@ type Stream interface { | |||||||
| } | } | ||||||
|  |  | ||||||
| type stream struct { | type stream struct { | ||||||
|  | 	sync.RWMutex | ||||||
| 	Stream | 	Stream | ||||||
| 	err     error | 	err     error | ||||||
| 	request *request | 	request *request | ||||||
| 	sync.RWMutex |  | ||||||
| } | } | ||||||
|  |  | ||||||
| type request struct { | type request struct { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user