| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package core
- import (
- "sync"
- )
- // Commander is a feature that accepts commands from external source.
- type Commander interface {
- Feature
- }
- type syncCommander struct {
- sync.RWMutex
- Commander
- }
- func (c *syncCommander) Start() error {
- c.RLock()
- defer c.RUnlock()
- if c.Commander == nil {
- return nil
- }
- return c.Commander.Start()
- }
- func (c *syncCommander) Close() error {
- c.RLock()
- defer c.RUnlock()
- if c.Commander == nil {
- return nil
- }
- return c.Commander.Close()
- }
- func (c *syncCommander) Set(commander Commander) {
- c.Lock()
- defer c.Unlock()
- c.Commander = commander
- }
|