diff --git a/api/api.go b/api/api.go index 9e617bb6..f47f889a 100644 --- a/api/api.go +++ b/api/api.go @@ -34,20 +34,20 @@ type Option func(*Options) error type Endpoint struct { // Name Greeter.Hello Name string - // Description e.g what's this endpoint for + // Desciption for endpoint Description string // Handler e.g rpc, proxy Handler string + // Body destination + // "*" or "" - top level message value + // "string" - inner message value + Body string // Host e.g example.com Host []string // Method e.g GET, POST Method []string // Path e.g /greeter. Expect POSIX regex Path []string - // Body destination - // "*" or "" - top level message value - // "string" - inner message value - Body string // Stream flag Stream bool } diff --git a/api/handler/options.go b/api/handler/options.go index 69a701ed..74bc1030 100644 --- a/api/handler/options.go +++ b/api/handler/options.go @@ -13,11 +13,11 @@ var ( // Options struct holds handler options type Options struct { - MaxRecvSize int64 - Namespace string Router router.Router Client client.Client Logger logger.Logger + Namespace string + MaxRecvSize int64 } // Option func signature diff --git a/api/resolver/options.go b/api/resolver/options.go index 861ae00b..db1dc017 100644 --- a/api/resolver/options.go +++ b/api/resolver/options.go @@ -8,9 +8,12 @@ import ( // Options struct type Options struct { - Handler string + // Context is for external defined options + Context context.Context + // Handler name + Handler string + // ServicePrefix is the prefix ServicePrefix string - Context context.Context } // Option func diff --git a/api/router/options.go b/api/router/options.go index fb8954f3..b5d5eec6 100644 --- a/api/router/options.go +++ b/api/router/options.go @@ -11,11 +11,16 @@ import ( // Options holds the options for api router type Options struct { - Handler string + // Register for service lookup Register register.Register + // Resolver to use Resolver resolver.Resolver - Logger logger.Logger - Context context.Context + // Logger micro logger + Logger logger.Logger + // Context is for external options + Context context.Context + // Handler name + Handler string } // Option func signature diff --git a/auth/auth.go b/auth/auth.go index 6113a189..52f03937 100644 --- a/auth/auth.go +++ b/auth/auth.go @@ -53,30 +53,30 @@ type Auth interface { // Account provided by an auth provider type Account struct { - // ID of the account e.g. email + // Metadata any other associated metadata + Metadata metadata.Metadata `json:"metadata"` + // ID of the account e.g. email or uuid ID string `json:"id"` // Type of the account, e.g. service Type string `json:"type"` // Issuer of the account Issuer string `json:"issuer"` - // Any other associated metadata - Metadata metadata.Metadata `json:"metadata"` - // Scopes the account has access to - Scopes []string `json:"scopes"` // Secret for the account, e.g. the password Secret string `json:"secret"` + // Scopes the account has access to + Scopes []string `json:"scopes"` } // Token can be short or long lived type Token struct { - // The token to be used for accessing resources - AccessToken string `json:"access_token"` - // RefreshToken to be used to generate a new token - RefreshToken string `json:"refresh_token"` // Time of token creation Created time.Time `json:"created"` // Time of token expiry Expiry time.Time `json:"expiry"` + // The token to be used for accessing resources + AccessToken string `json:"access_token"` + // RefreshToken to be used to generate a new token + RefreshToken string `json:"refresh_token"` } // Expired returns a boolean indicating if the token needs to be refreshed @@ -106,17 +106,15 @@ const ( // Rule is used to verify access to a resource type Rule struct { - // ID of the rule, e.g. "public" - ID string - // Scope the rule requires, a blank scope indicates open to the public and * indicates the rule - // applies to any valid account - Scope string - // Resource the rule applies to + // Resource that rule belongs to Resource *Resource - // Access determines if the rule grants or denies access to the resource + // ID of the rule + ID string + // Scope of the rule + Scope string + // Access flag allow/deny Access Access - // Priority the rule should take when verifying a request, the higher the value the sooner the - // rule will be applied + // Priority holds the rule priority Priority int32 } diff --git a/auth/options.go b/auth/options.go index 92e28f82..7dd6ecaa 100644 --- a/auth/options.go +++ b/auth/options.go @@ -26,33 +26,34 @@ func NewOptions(opts ...Option) Options { // Options struct holds auth options type Options struct { - Name string - // Issuer of the service's account - Issuer string - // ID is the services auth ID - ID string - // Secret is used to authenticate the service - Secret string + // Context holds the external options + Context context.Context + // Meter used for metrics + Meter meter.Meter + // Logger used for logging + Logger logger.Logger + // Tracer used for tracing + Tracer tracer.Tracer + // Store used for stre data + Store store.Store // Token is the services token used to authenticate itself Token *Token - // PublicKey for decoding JWTs - PublicKey string - // PrivateKey for encoding JWTs - PrivateKey string // LoginURL is the relative url path where a user can login LoginURL string - // Store to back auth - Store store.Store + // PrivateKey for encoding JWTs + PrivateKey string + // PublicKey for decoding JWTs + PublicKey string + // Secret is used to authenticate the service + Secret string + // ID is the services auth ID + ID string + // Issuer of the service's account + Issuer string + // Name holds the auth name + Name string // Addrs sets the addresses of auth Addrs []string - // Logger sets the logger - Logger logger.Logger - // Meter sets tht meter - Meter meter.Meter - // Tracer - Tracer tracer.Tracer - // Context to store other options - Context context.Context } // Option func @@ -124,18 +125,12 @@ func LoginURL(url string) Option { // GenerateOptions struct type GenerateOptions struct { - // Metadata associated with the account Metadata metadata.Metadata - // Scopes the account has access too - Scopes []string - // Provider of the account, e.g. oauth Provider string - // Type of the account, e.g. user - Type string - // Secret used to authenticate the account - Secret string - // Issuer of the account, e.g. micro - Issuer string + Type string + Secret string + Issuer string + Scopes []string } // GenerateOption func @@ -194,16 +189,11 @@ func NewGenerateOptions(opts ...GenerateOption) GenerateOptions { // TokenOptions struct type TokenOptions struct { - // ID for the account - ID string - // Secret for the account - Secret string - // RefreshToken is used to refesh a token + ID string + Secret string RefreshToken string - // Expiry is the time the token should live for - Expiry time.Duration - // Issuer of the account - Issuer string + Issuer string + Expiry time.Duration } // TokenOption func diff --git a/broker/memory.go b/broker/memory.go index f89e3959..5c5c5eac 100644 --- a/broker/memory.go +++ b/broker/memory.go @@ -13,28 +13,27 @@ import ( ) type memoryBroker struct { - opts Options - - addr string - sync.RWMutex - connected bool + opts Options Subscribers map[string][]*memorySubscriber + addr string + sync.RWMutex + connected bool } type memoryEvent struct { opts Options - topic string err error message interface{} + topic string } type memorySubscriber struct { - id string - topic string - exit chan bool - handler Handler opts SubscribeOptions ctx context.Context + exit chan bool + handler Handler + id string + topic string } func (m *memoryBroker) Options() Options { diff --git a/broker/options.go b/broker/options.go index 0bc3959e..26cb637a 100644 --- a/broker/options.go +++ b/broker/options.go @@ -13,25 +13,26 @@ import ( // Options struct type Options struct { - Name string - // Addrs useed by broker - Addrs []string - // ErrorHandler executed when errors occur processing messages - ErrorHandler Handler - // Codec used to marshal/unmarshal messages - Codec codec.Codec - // Logger the used logger - Logger logger.Logger - // Meter the used for metrics - Meter meter.Meter - // Tracer used for trace + // Tracer used for tracing Tracer tracer.Tracer - // TLSConfig for secure communication - TLSConfig *tls.Config - // Register used for clustering + // Register can be used for clustering Register register.Register - // Context is used for non default options + // Codec holds the codec for marshal/unmarshal + Codec codec.Codec + // Logger used for logging + Logger logger.Logger + // Meter used for metrics + Meter meter.Meter + // Context holds external options Context context.Context + // TLSConfig holds tls.TLSConfig options + TLSConfig *tls.Config + // ErrorHandler used when broker can't unmarshal incoming message + ErrorHandler Handler + // Name holds the broker name + Name string + // Addrs holds the broker address + Addrs []string } // NewOptions create new Options @@ -59,10 +60,10 @@ func Context(ctx context.Context) Option { // PublishOptions struct type PublishOptions struct { - // BodyOnly says that only body of the message must be published - BodyOnly bool - // Context for non default options + // Context holds external options Context context.Context + // BodyOnly flag says the message contains raw body bytes + BodyOnly bool } // NewPublishOptions creates PublishOptions struct @@ -80,22 +81,16 @@ func NewPublishOptions(opts ...PublishOption) PublishOptions { // SubscribeOptions struct type SubscribeOptions struct { - // AutoAck ack messages if handler returns nil err - AutoAck bool - - // ErrorHandler executed when errors occur processing messages - ErrorHandler Handler - - // Group for subscriber, Subscribers with the same group name - // will create a shared subscription where each - // receives a subset of messages. - Group string - - // BodyOnly says that consumed only body of the message - BodyOnly bool - - // Context is used for non default options + // Context holds external options Context context.Context + // ErrorHandler used when broker can't unmarshal incoming message + ErrorHandler Handler + // Group holds consumer group + Group string + // AutoAck flag specifies auto ack of incoming message when no error happens + AutoAck bool + // BodyOnly flag specifies that message contains only body bytes without header + BodyOnly bool } // Option func diff --git a/build/build.go b/build/build.go index 1b7cc2b0..69107012 100644 --- a/build/build.go +++ b/build/build.go @@ -21,12 +21,12 @@ type Source struct { // Package is packaged format for source type Package struct { + // Source of the package + Source *Source // Name of the package Name string // Location of the package Path string // Type of package e.g tarball, binary, docker Type string - // Source of the package - Source *Source } diff --git a/client/noop.go b/client/noop.go index 6b5ef2b0..4bbcb7f7 100644 --- a/client/noop.go +++ b/client/noop.go @@ -31,12 +31,12 @@ type noopMessage struct { } type noopRequest struct { + body interface{} + codec codec.Codec service string method string endpoint string contentType string - body interface{} - codec codec.Codec stream bool } diff --git a/client/options.go b/client/options.go index 33f188a0..b1ebeadb 100644 --- a/client/options.go +++ b/client/options.go @@ -18,35 +18,40 @@ import ( // Options holds client options type Options struct { - Name string - // Used to select codec - ContentType string - // Proxy address to send requests via - Proxy string - - // Plugged interfaces - Broker broker.Broker - Codecs map[string]codec.Codec - Router router.Router - Selector selector.Selector - Transport transport.Transport - Logger logger.Logger - Meter meter.Meter - // Lookup used for looking up routes - Lookup LookupFunc - - // Connection Pool - PoolSize int - PoolTTL time.Duration - Tracer tracer.Tracer - // Wrapper that used client - Wrappers []Wrapper - - // CallOptions that used by default + // CallOptions contains default CallOptions CallOptions CallOptions - - // Context is used for non default options + // Logger used to log messages + Logger logger.Logger + // Tracer used for tracing + Tracer tracer.Tracer + // Broker used to publish messages + Broker broker.Broker + // Meter used for metrics + Meter meter.Meter + // Router used to get route + Router router.Router + // Selector used to select needed address + Selector selector.Selector + // Transport used for transfer messages + Transport transport.Transport + // Context is used for external options Context context.Context + // Codecs map + Codecs map[string]codec.Codec + // Lookup func used to get destination addr + Lookup LookupFunc + // Proxy is used for proxy requests + Proxy string + // ContentType is Used to select codec + ContentType string + // Name is the client name + Name string + // Wrappers contains wrappers + Wrappers []Wrapper + // PoolSize connection pool size + PoolSize int + // PoolTTL conection pool ttl + PoolTTL time.Duration } // NewCallOptions creates new call options struct @@ -60,34 +65,34 @@ func NewCallOptions(opts ...CallOption) CallOptions { // CallOptions holds client call options type CallOptions struct { - // Address of remote hosts - Address []string - // Backoff func - Backoff BackoffFunc - // DialTimeout is the transport Dial Timeout - DialTimeout time.Duration - // Retries is the number of Call attempts - Retries int - // Retry func to be used for retries - Retry RetryFunc - // RequestTimeout specifies request timeout - RequestTimeout time.Duration - // Router to use for this call + // Router used for route Router router.Router - // Selector to use for the call + // Selector selects addr Selector selector.Selector - // SelectOptions to use when selecting a route - SelectOptions []selector.SelectOption - // StreamTimeout timeout for the stream - StreamTimeout time.Duration - // AuthToken specifies the auth token as the authorization header - AuthToken bool - // Network to lookup the route within - Network string - // CallWrappers is for low level call func - CallWrappers []CallWrapper - // Context is used for non default options + // Context used for deadline Context context.Context + // Retry func used for retries + Retry RetryFunc + // Backoff func used for backoff when retry + Backoff BackoffFunc + // Network name + Network string + // CallWrappers call wrappers + CallWrappers []CallWrapper + // SelectOptions selector options + SelectOptions []selector.SelectOption + // Address specifies static addr list + Address []string + // Retries specifies retries num + Retries int + // StreamTimeout stream timeout + StreamTimeout time.Duration + // RequestTimeout request timeout + RequestTimeout time.Duration + // DialTimeout dial timeout + DialTimeout time.Duration + // AuthToken flag + AuthToken bool } // Context pass context to client @@ -108,10 +113,10 @@ func NewPublishOptions(opts ...PublishOption) PublishOptions { // PublishOptions holds publish options type PublishOptions struct { - // Exchange is the routing exchange for the message - Exchange string - // Context holds additional options + // Context used for external options Context context.Context + // Exchange topic exchange name + Exchange string } // NewMessageOptions creates message options struct @@ -125,6 +130,7 @@ func NewMessageOptions(opts ...MessageOption) MessageOptions { // MessageOptions holds client message options type MessageOptions struct { + // ContentType specify content-type of message ContentType string } @@ -139,12 +145,12 @@ func NewRequestOptions(opts ...RequestOption) RequestOptions { // RequestOptions holds client request options type RequestOptions struct { - // ContentType specify content-type of request - ContentType string - // Stream says that request is the streaming - Stream bool - // Context can hold other options + // Context used for external options Context context.Context + // ContentType specify content-type of message + ContentType string + // Stream flag + Stream bool } // NewOptions creates new options struct diff --git a/client/test_request.go b/client/test_request.go index 91db6302..7a3972c5 100644 --- a/client/test_request.go +++ b/client/test_request.go @@ -5,13 +5,13 @@ import ( ) type testRequest struct { - service string + opts RequestOptions + codec codec.Codec + body interface{} method string endpoint string contentType string - codec codec.Codec - body interface{} - opts RequestOptions + service string } func (r *testRequest) ContentType() string { diff --git a/codec/codec.go b/codec/codec.go index a893fd91..81b2ee1e 100644 --- a/codec/codec.go +++ b/codec/codec.go @@ -51,16 +51,14 @@ type Codec interface { // the communication, likely followed by the body. // In the case of an error, body may be nil. type Message struct { - Id string - Type MessageType + Header metadata.Metadata Target string Method string Endpoint string Error string - - // The values read from the socket - Header metadata.Metadata - Body []byte + Id string + Body []byte + Type MessageType } // NewMessage creates new codec message diff --git a/codec/options.go b/codec/options.go index 4cb39323..dbcfa499 100644 --- a/codec/options.go +++ b/codec/options.go @@ -11,10 +11,14 @@ type Option func(*Options) // Options contains codec options type Options struct { + // Meter used for metrics + Meter meter.Meter + // Logger used for logging + Logger logger.Logger + // Tracer used for tracing + Tracer tracer.Tracer + // MaxMsgSize specifies max messages size that reads by codec MaxMsgSize int - Meter meter.Meter - Logger logger.Logger - Tracer tracer.Tracer } // MaxMsgSize sets the max message size diff --git a/config/options.go b/config/options.go index 4ca4f2cd..c7b8079a 100644 --- a/config/options.go +++ b/config/options.go @@ -11,26 +11,32 @@ import ( // Options hold the config options type Options struct { - Name string - AllowFail bool - BeforeLoad []func(context.Context, Config) error - AfterLoad []func(context.Context, Config) error - BeforeSave []func(context.Context, Config) error - AfterSave []func(context.Context, Config) error - // Struct that holds config data + // Struct holds the destination config struct Struct interface{} - // StructTag name - StructTag string - // Logger that will be used - Logger logger.Logger - // Meter that will be used - Meter meter.Meter - // Tracer used for trace - Tracer tracer.Tracer // Codec that used for load/save Codec codec.Codec - // Context for alternative data + // Tracer that will be used + Tracer tracer.Tracer + // Meter that will be used + Meter meter.Meter + // Logger that will be used + Logger logger.Logger + // Context used for external options Context context.Context + // Name of the config + Name string + // StructTag name + StructTag string + // BeforeSave contains slice of funcs that runs before save + BeforeSave []func(context.Context, Config) error + // AfterLoad contains slice of funcs that runs after load + AfterLoad []func(context.Context, Config) error + // BeforeLoad contains slice of funcs that runs before load + BeforeLoad []func(context.Context, Config) error + // AfterSave contains slice of funcs that runs after save + AfterSave []func(context.Context, Config) error + // AllowFail flag to allow fail in config source + AllowFail bool } // Option function signature diff --git a/errors/errors.go b/errors/errors.go index fab2c896..7cba5424 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -37,10 +37,14 @@ var ( // Error type type Error struct { - Id string - Code int32 + // Id holds error id or service, usually someting like my_service or uuid + Id string + // Detail holds some useful details about error Detail string + // Status usually holds text of http status Status string + // Code holds error code + Code int32 } // Error satisfies error interface @@ -49,7 +53,7 @@ func (e *Error) Error() string { return string(b) } -// New generates a custom error. +// New generates a custom error func New(id, detail string, code int32) error { return &Error{ Id: id, diff --git a/logger/micro.go b/logger/micro.go index 3511d882..9106223f 100644 --- a/logger/micro.go +++ b/logger/micro.go @@ -21,9 +21,9 @@ func init() { } type defaultLogger struct { - sync.RWMutex opts Options enc *json.Encoder + sync.RWMutex } // Init(opts...) should only overwrite provided options diff --git a/logger/options.go b/logger/options.go index 1b32f46a..588c0a87 100644 --- a/logger/options.go +++ b/logger/options.go @@ -11,17 +11,18 @@ type Option func(*Options) // Options holds logger options type Options struct { - Name string - // The logging level the logger should log at. default is `InfoLevel` - Level Level - // fields to always be logged - Fields map[string]interface{} - // It's common to set this to a file, or leave it default which is `os.Stderr` + // Out holds the output writer Out io.Writer - // Caller skip frame count for file:line info - CallerSkipCount int - // Alternative options + // Context holds exernal options Context context.Context + // Fields holds additional metadata + Fields map[string]interface{} + // Name holds the logger name + Name string + // CallerSkipCount number of frmaes to skip + CallerSkipCount int + // The logging level the logger should log + Level Level } // NewOptions creates new options struct diff --git a/metadata/metadata.go b/metadata/metadata.go index 1f581554..47f94258 100644 --- a/metadata/metadata.go +++ b/metadata/metadata.go @@ -27,10 +27,10 @@ var ( // Iterator used to iterate over metadata with order type Iterator struct { + md Metadata + keys []string cur int cnt int - keys []string - md Metadata } // Next advance iterator to next element diff --git a/meter/options.go b/meter/options.go index 279fc69f..69ec0eaa 100644 --- a/meter/options.go +++ b/meter/options.go @@ -11,17 +11,26 @@ type Option func(*Options) // Options for metrics implementations: type Options struct { - Name string + // Logger used for logging + Logger logger.Logger + // Context holds external options + Context context.Context + // Name holds the meter name + Name string + // Address holds the address that serves metrics Address string - Path string - Labels Labels - //TimingObjectives map[float64]float64 - Logger logger.Logger - Context context.Context - MetricPrefix string - LabelPrefix string + // Path holds the path for metrics + Path string + // MetricPrefix holds the prefix for all metrics + MetricPrefix string + // LabelPrefix holds the prefix for all labels + LabelPrefix string + // Labels holds the default labels + Labels Labels + // WriteProcessMetrics flag to write process metrics WriteProcessMetrics bool - WriteFDMetrics bool + // WriteFDMetrics flag to write fd metrics + WriteFDMetrics bool } // NewOptions prepares a set of options: diff --git a/meter/wrapper/wrapper.go b/meter/wrapper/wrapper.go index ddf4739e..80405751 100644 --- a/meter/wrapper/wrapper.go +++ b/meter/wrapper/wrapper.go @@ -73,9 +73,9 @@ func Meter(m meter.Meter) Option { } type wrapper struct { - opts Options - callFunc client.CallFunc client.Client + callFunc client.CallFunc + opts Options } func NewClientWrapper(opts ...Option) client.Wrapper { diff --git a/network/options.go b/network/options.go index bad160dc..c508e5b9 100644 --- a/network/options.go +++ b/network/options.go @@ -15,6 +15,18 @@ type Option func(*Options) // Options configure network type Options struct { + // Router used for routing + Router router.Router + // Proxy holds the proxy + Proxy proxy.Proxy + // Logger used for logging + Logger logger.Logger + // Meter used for metrics + Meter meter.Meter + // Tracer used for tracing + Tracer tracer.Tracer + // Tunnel used for transfer data + Tunnel tunnel.Tunnel // Id of the node Id string // Name of the network @@ -25,18 +37,6 @@ type Options struct { Advertise string // Nodes is a list of nodes to connect to Nodes []string - // Tunnel is network tunnel - Tunnel tunnel.Tunnel - // Router is network router - Router router.Router - // Proxy is network proxy - Proxy proxy.Proxy - // Logger - Logger logger.Logger - // Meter - Meter meter.Meter - // Tracer - Tracer tracer.Tracer } // Id sets the id of the network node diff --git a/network/transport/memory.go b/network/transport/memory.go index 26e969c6..544076bb 100644 --- a/network/transport/memory.go +++ b/network/transport/memory.go @@ -14,19 +14,14 @@ import ( ) type memorySocket struct { - recv chan *Message - send chan *Message - // sock exit - exit chan bool - // listener exit - lexit chan bool - - local string - remote string - - // for send/recv transport.Timeout - timeout time.Duration ctx context.Context + recv chan *Message + exit chan bool + lexit chan bool + send chan *Message + local string + remote string + timeout time.Duration sync.RWMutex } @@ -36,19 +31,19 @@ type memoryClient struct { } type memoryListener struct { - addr string + topts Options + ctx context.Context + lopts ListenOptions exit chan bool conn chan *memorySocket - lopts ListenOptions - topts Options + addr string sync.RWMutex - ctx context.Context } type memoryTransport struct { - opts Options - sync.RWMutex + opts Options listeners map[string]*memoryListener + sync.RWMutex } func (ms *memorySocket) Recv(m *Message) error { diff --git a/network/transport/options.go b/network/transport/options.go index 6efe7b86..8d4d25da 100644 --- a/network/transport/options.go +++ b/network/transport/options.go @@ -13,26 +13,24 @@ import ( // Options struct holds the transport options type Options struct { - Name string - // Addrs is the list of intermediary addresses to connect to - Addrs []string - // Codec is the codec interface to use where headers are not supported - // by the transport and the entire payload must be encoded - Codec codec.Codec - // TLSConfig to secure the connection. The assumption is that this - // is mTLS keypair - TLSConfig *tls.Config - // Timeout sets the timeout for Send/Recv - Timeout time.Duration - // Logger sets the logger - Logger logger.Logger - // Meter sets the meter + // Meter used for metrics Meter meter.Meter - // Tracer sets the tracer + // Tracer used for tracing Tracer tracer.Tracer - // Other options for implementations of the interface - // can be stored in a context + // Codec used for marshal/unmarshal messages + Codec codec.Codec + // Logger used for logging + Logger logger.Logger + // Context holds external options Context context.Context + // TLSConfig holds tls.TLSConfig options + TLSConfig *tls.Config + // Name holds the transport name + Name string + // Addrs holds the transport addrs + Addrs []string + // Timeout holds the timeout + Timeout time.Duration } // NewOptions returns new options @@ -53,18 +51,12 @@ func NewOptions(opts ...Option) Options { // DialOptions struct type DialOptions struct { - // Tells the transport this is a streaming connection with - // multiple calls to send/recv and that send may not even be called - Stream bool - // Timeout for dialing - Timeout time.Duration - - // TODO: add tls options when dialling - // Currently set in global options - - // Other options for implementations of the interface - // can be stored in a context + // Context holds the external options Context context.Context + // Timeout holds the timeout + Timeout time.Duration + // Stream flag + Stream bool } // NewDialOptions returns new DialOptions @@ -85,10 +77,10 @@ func NewDialOptions(opts ...DialOption) DialOptions { type ListenOptions struct { // TODO: add tls options when listening // Currently set in global options - - // Other options for implementations of the interface - // can be stored in a context + // Context holds the external options Context context.Context + // TLSConfig holds the *tls.Config options + TLSConfig *tls.Config } // NewListenOptions returns new ListenOptions diff --git a/network/tunnel/broker/broker.go b/network/tunnel/broker/broker.go index 34ae9279..ef047c7e 100644 --- a/network/tunnel/broker/broker.go +++ b/network/tunnel/broker/broker.go @@ -17,17 +17,16 @@ type tunBroker struct { } type tunSubscriber struct { - topic string - handler broker.Handler - opts broker.SubscribeOptions - - closed chan bool + opts broker.SubscribeOptions listener tunnel.Listener + handler broker.Handler + closed chan bool + topic string } type tunEvent struct { - topic string message *broker.Message + topic string } // used to access tunnel from options context diff --git a/network/tunnel/options.go b/network/tunnel/options.go index 61249c22..3eaf8809 100644 --- a/network/tunnel/options.go +++ b/network/tunnel/options.go @@ -22,23 +22,24 @@ type Option func(*Options) // Options provides network configuration options type Options struct { - Name string - // Id is tunnel id - Id string - // Address is tunnel address - Address string - // Nodes are remote nodes - Nodes []string - // The shared auth token - Token string - // Transport listens to incoming connections - Transport transport.Transport - // Logger + // Logger used for logging Logger logger.Logger - // Meter + // Meter used for metrics Meter meter.Meter - // Tracer + // Tracer used for tracing Tracer tracer.Tracer + // Transport used for communication + Transport transport.Transport + // Token the shared auth token + Token string + // Name holds the tunnel name + Name string + // Id holds the tunnel id + Id string + // Address holds the tunnel address + Address string + // Nodes holds the tunnel nodes + Nodes []string } // DialOption func @@ -61,9 +62,9 @@ type ListenOption func(*ListenOptions) // ListenOptions provides listen options type ListenOptions struct { - // specify mode of the session + // Mode specify mode of the session Mode Mode - // The read timeout + // Timeout the read timeout Timeout time.Duration } diff --git a/options.go b/options.go index ca73f942..c1ef19bb 100644 --- a/options.go +++ b/options.go @@ -23,33 +23,44 @@ import ( // Options for micro service type Options struct { - Name string - Version string - Metadata metadata.Metadata - - Auths []auth.Auth - Brokers []broker.Broker - Loggers []logger.Logger - Meters []meter.Meter - Configs []config.Config - Clients []client.Client - Servers []server.Server - Stores []store.Store - Registers []register.Register - Tracers []tracer.Tracer - Routers []router.Router - // Runtime runtime.Runtime - // Profile profile.Profile - - // Before and After funcs - BeforeStart []func(context.Context) error - BeforeStop []func(context.Context) error - AfterStart []func(context.Context) error - AfterStop []func(context.Context) error - - // Other options for implementations of the interface - // can be stored in a context + // Context holds external options or cancel stuff Context context.Context + // Metadata holds service metadata + Metadata metadata.Metadata + // Version holds service version + Version string + // Name holds service name + Name string + // Brokers holds brokers + Brokers []broker.Broker + // Loggers holds loggers + Loggers []logger.Logger + // Meters holds meter + Meters []meter.Meter + // Configs holds config + Configs []config.Config + // Clients holds clients + Clients []client.Client + // Auths holds auths + Auths []auth.Auth + // Stores holds stores + Stores []store.Store + // Registers holds registers + Registers []register.Register + // Tracers holds tracers + Tracers []tracer.Tracer + // Routers holds routers + Routers []router.Router + // BeforeStart holds funcs that runs before service starts + BeforeStart []func(context.Context) error + // BeforeStop holds funcs that runs before service stops + BeforeStop []func(context.Context) error + // AfterStart holds funcs that runs after service starts + AfterStart []func(context.Context) error + // AfterStop holds funcs that runs after service stops + AfterStop []func(context.Context) error + // Servers holds servers + Servers []server.Server } // NewOptions returns new Options filled with defaults and overrided by provided opts diff --git a/profiler/http/http.go b/profiler/http/http.go index d39640e8..67fd739e 100644 --- a/profiler/http/http.go +++ b/profiler/http/http.go @@ -11,9 +11,9 @@ import ( ) type httpProfile struct { + server *http.Server sync.Mutex running bool - server *http.Server } var ( diff --git a/profiler/pprof/pprof.go b/profiler/pprof/pprof.go index 835a4f6b..83592e69 100644 --- a/profiler/pprof/pprof.go +++ b/profiler/pprof/pprof.go @@ -13,16 +13,12 @@ import ( ) type profiler struct { - opts profile.Options - + exit chan bool + cpuFile *os.File + memFile *os.File + opts profile.Options sync.Mutex running bool - exit chan bool - - // where the cpu profile is written - cpuFile *os.File - // where the mem profile is written - memFile *os.File } func (p *profiler) writeHeap(f *os.File) { diff --git a/proxy/options.go b/proxy/options.go index 2b0a66c9..fdc4dfc8 100644 --- a/proxy/options.go +++ b/proxy/options.go @@ -11,20 +11,20 @@ import ( // Options for proxy type Options struct { - // Specific endpoint to always call - Endpoint string - // The default client to use - Client client.Client - // The default router to use - Router router.Router - // Extra links for different clients - Links map[string]client.Client - // Logger - Logger logger.Logger - // Meter - Meter meter.Meter - // Tracer + // Tracer used for tracing Tracer tracer.Tracer + // Client for communication + Client client.Client + // Router for routing + Router router.Router + // Logger used for logging + Logger logger.Logger + // Meter used for metrics + Meter meter.Meter + // Links holds the communication links + Links map[string]client.Client + // Endpoint holds the destination address + Endpoint string } // Option func signature diff --git a/register/memory.go b/register/memory.go index eb0c4628..8ac17bb6 100644 --- a/register/memory.go +++ b/register/memory.go @@ -16,9 +16,9 @@ var ( ) type node struct { - *Node - TTL time.Duration LastSeen time.Time + *Node + TTL time.Duration } type record struct { @@ -405,10 +405,10 @@ func (m *memory) String() string { } type watcher struct { - id string - wo WatchOptions res chan *Result exit chan bool + wo WatchOptions + id string } func (m *watcher) Next() (*Result, error) { diff --git a/register/options.go b/register/options.go index 0e7c3799..1d8af42d 100644 --- a/register/options.go +++ b/register/options.go @@ -12,20 +12,22 @@ import ( // Options holds options for register type Options struct { - Name string - Addrs []string - Timeout time.Duration - TLSConfig *tls.Config - - // Logger that will be used - Logger logger.Logger - // Meter that will be used - Meter meter.Meter - // Tracer + // Tracer used for tracing Tracer tracer.Tracer - // Other options for implementations of the interface - // can be stored in a context + // Context holds external options Context context.Context + // Logged used for logging + Logger logger.Logger + // Meter used for metrics + Meter meter.Meter + // TLSConfig holds tls.TLSConfig options + TLSConfig *tls.Config + // Name holds the name of register + Name string + // Addrs specifies register addrs + Addrs []string + // Timeout specifies timeout + Timeout time.Duration } // NewOptions returns options that filled by opts @@ -44,13 +46,9 @@ func NewOptions(opts ...Option) Options { // RegisterOptions holds options for register method type RegisterOptions struct { - TTL time.Duration - // Other options for implementations of the interface - // can be stored in a context - Context context.Context - // Domain to register the service in - Domain string - // Attempts specify attempts for register + Context context.Context + Domain string + TTL time.Duration Attempts int } diff --git a/register/register.go b/register/register.go index 792b41cd..17119960 100644 --- a/register/register.go +++ b/register/register.go @@ -52,17 +52,17 @@ type Service struct { // Node holds node register info type Node struct { + Metadata metadata.Metadata `json:"metadata"` Id string `json:"id"` Address string `json:"address"` - Metadata metadata.Metadata `json:"metadata"` } // Endpoint holds endpoint register info type Endpoint struct { - Name string `json:"name"` Request *Value `json:"request"` Response *Value `json:"response"` Metadata metadata.Metadata `json:"metadata"` + Name string `json:"name"` } // Value holds additional kv stuff diff --git a/register/watcher.go b/register/watcher.go index edc5bc72..93279a6b 100644 --- a/register/watcher.go +++ b/register/watcher.go @@ -7,14 +7,17 @@ import "time" type Watcher interface { // Next is a blocking call Next() (*Result, error) + // Stop stops the watcher Stop() } // Result is returned by a call to Next on // the watcher. Actions can be create, update, delete type Result struct { - Action string + // Service holds register service Service *Service + // Action holds the action + Action string } // EventType defines register event type @@ -45,12 +48,12 @@ func (t EventType) String() string { // Event is register event type Event struct { - // Id is register id - Id string - // Type defines type of event - Type EventType // Timestamp is event timestamp Timestamp time.Time // Service is register service Service *Service + // Id is register id + Id string + // Type defines type of event + Type EventType } diff --git a/resolver/dns/dns.go b/resolver/dns/dns.go index 53673b90..187ca4fd 100644 --- a/resolver/dns/dns.go +++ b/resolver/dns/dns.go @@ -12,9 +12,9 @@ import ( // Resolver is a DNS network resolve type Resolver struct { - // The resolver address to use - Address string goresolver *net.Resolver + // Address of resolver to use + Address string sync.RWMutex } diff --git a/router/options.go b/router/options.go index 8db15101..4a57b930 100644 --- a/router/options.go +++ b/router/options.go @@ -10,23 +10,15 @@ import ( // Options are router options type Options struct { - Name string - // Id is router id - Id string - // Address is router address - Address string - // Gateway is network gateway - Gateway string - // Network is network address - Network string - // Register is the local register + Logger logger.Logger + Context context.Context Register register.Register - // Precache routes + Name string + Gateway string + Network string + Id string + Address string Precache bool - // Logger - Logger logger.Logger - // Context for additional options - Context context.Context } // Id sets Router Id diff --git a/router/route.go b/router/route.go index 9b66529b..14e9641c 100644 --- a/router/route.go +++ b/router/route.go @@ -15,10 +15,10 @@ var ( // Route is network route type Route struct { + // Metadata for the route + Metadata metadata.Metadata // Service is destination service name Service string - // Address is service node address - Address string // Gateway is route gateway Gateway string // Network is network address @@ -27,10 +27,10 @@ type Route struct { Router string // Link is network link Link string + // Address is service node address + Address string // Metric is the route cost metric Metric int64 - // Metadata for the route - Metadata metadata.Metadata } // Hash returns route hash sum. diff --git a/router/watcher.go b/router/watcher.go index 4895cbe7..f3663d9e 100644 --- a/router/watcher.go +++ b/router/watcher.go @@ -38,14 +38,14 @@ func (t EventType) String() string { // Event is returned by a call to Next on the watcher. type Event struct { - // Unique id of the event + // Route is table route + Route Route + // Timestamp is event timestamp + Timestamp time.Time + // Id of the event Id string // Type defines type of event Type EventType - // Timestamp is event timestamp - Timestamp time.Time - // Route is table route - Route Route } // Watcher defines routing table watcher interface diff --git a/runtime/options.go b/runtime/options.go index f2ad2e4c..b154996f 100644 --- a/runtime/options.go +++ b/runtime/options.go @@ -10,18 +10,12 @@ import ( // Options configure runtime type Options struct { - // Scheduler for updates Scheduler Scheduler - // Service type to manage - Type string - // Source of the services repository - Source string - // Base image to use - Image string - // Client to use when making requests - Client client.Client - // Logger - Logger logger.Logger + Client client.Client + Logger logger.Logger + Type string + Source string + Image string } // Option func signature @@ -77,42 +71,26 @@ type ReadOption func(o *ReadOptions) // CreateOptions configure runtime services type CreateOptions struct { - // Command to execut - Command []string - // Args to pass into command - Args []string - // Environment to configure - Env []string - // Log output - Output io.Writer - // Type of service to create - Type string - // Retries before failing deploy - Retries int - // Specify the image to use - Image string - // Namespace to create the service in - Namespace string - // Specify the context to use - Context context.Context - // Secrets to use - Secrets map[string]string - // Resources to allocate the service + Context context.Context + Output io.Writer Resources *Resources + Secrets map[string]string + Image string + Namespace string + Type string + Command []string + Args []string + Env []string + Retries int } // ReadOptions queries runtime services type ReadOptions struct { - // Service name - Service string - // Version queries services with given version - Version string - // Type of service - Type string - // Namespace the service is running in + Context context.Context + Service string + Version string + Type string Namespace string - // Specify the context to use - Context context.Context } // CreateType sets the type of service to create @@ -238,12 +216,9 @@ type UpdateOption func(o *UpdateOptions) // UpdateOptions struct type UpdateOptions struct { - // Namespace the service is running in + Context context.Context + Secrets map[string]string Namespace string - // Specify the context to use - Context context.Context - // Secrets to use - Secrets map[string]string } // UpdateSecret sets a secret to provide the service with @@ -276,10 +251,8 @@ type DeleteOption func(o *DeleteOptions) // DeleteOptions struct type DeleteOptions struct { - // Namespace the service is running in + Context context.Context Namespace string - // Specify the context to use - Context context.Context } // DeleteNamespace sets the namespace @@ -301,14 +274,10 @@ type LogsOption func(o *LogsOptions) // LogsOptions configure runtime logging type LogsOptions struct { - // How many existing lines to show - Count int64 - // Stream new lines? - Stream bool - // Namespace the service is running in + Context context.Context Namespace string - // Specify the context to use - Context context.Context + Count int64 + Stream bool } // LogsCount confiures how many existing lines to show diff --git a/runtime/runtime.go b/runtime/runtime.go index 87921314..b54d7b93 100644 --- a/runtime/runtime.go +++ b/runtime/runtime.go @@ -37,15 +37,20 @@ type Runtime interface { // Logs returns a log stream type Logs interface { + // Error retuns error Error() error + // Chan return chan log Chan() chan Log + // Stop stops the log stream Stop() error } // Log is a log message type Log struct { - Message string + // Metadata holds metadata Metadata metadata.Metadata + // Message holds the message + Message string } // Scheduler is a runtime service scheduler @@ -84,28 +89,28 @@ func (t EventType) String() string { // Event is notification event type Event struct { - // ID of the event - ID string - // Type is event type - Type EventType - // Timestamp is event timestamp + // Timestamp of event Timestamp time.Time // Service the event relates to Service *Service // Options to use when processing the event Options *CreateOptions + // ID of the event + ID string + // Type is event type + Type EventType } // Service is runtime service type Service struct { + // Metadata stores metadata + Metadata metadata.Metadata // Name of the service Name string // Version of the service Version string - // url location of source + // Name of the service Source string - // Metadata stores metadata - Metadata metadata.Metadata } // Resources which are allocated to a serivce diff --git a/server/handler.go b/server/handler.go index b0fc6511..8776ce2a 100644 --- a/server/handler.go +++ b/server/handler.go @@ -7,10 +7,10 @@ import ( ) type rpcHandler struct { - name string - handler interface{} - endpoints []*register.Endpoint opts HandlerOptions + handler interface{} + name string + endpoints []*register.Endpoint } func newRpcHandler(handler interface{}, opts ...HandlerOption) Handler { diff --git a/server/noop.go b/server/noop.go index 487ea50f..7547f934 100644 --- a/server/noop.go +++ b/server/noop.go @@ -32,16 +32,16 @@ const ( ) type noopServer struct { - h Handler opts Options + h Handler rsvc *register.Service handlers map[string]Handler subscribers map[*subscriber][]broker.Subscriber - registered bool - started bool exit chan chan error wg *sync.WaitGroup sync.RWMutex + registered bool + started bool } // NewServer returns new noop server diff --git a/server/options.go b/server/options.go index 0973a2ce..23cb72d4 100644 --- a/server/options.go +++ b/server/options.go @@ -23,50 +23,62 @@ type Option func(*Options) // Options server struct type Options struct { - Codecs map[string]codec.Codec - Broker broker.Broker - Register register.Register - Tracer tracer.Tracer - Auth auth.Auth - Logger logger.Logger - Meter meter.Meter - Transport transport.Transport - Metadata metadata.Metadata - Name string - Address string - Advertise string - Id string - Namespace string - Version string - HdlrWrappers []HandlerWrapper - SubWrappers []SubscriberWrapper - - // RegisterCheck runs a check function before registering the service - RegisterCheck func(context.Context) error - // The register expiry time - RegisterTTL time.Duration - // The interval on which to register - RegisterInterval time.Duration - // RegisterAttempts specify how many times try to register - RegisterAttempts int - // DeegisterAttempts specify how many times try to deregister - DeregisterAttempts int - - // The router for requests + // Context holds the external options and can be used for server shutdown + Context context.Context + // Broker holds the server broker + Broker broker.Broker + // Register holds the register + Register register.Register + // Tracer holds the tracer + Tracer tracer.Tracer + // Auth holds the auth + Auth auth.Auth + // Logger holds the logger + Logger logger.Logger + // Meter holds the meter + Meter meter.Meter + // Transport holds the transport + Transport transport.Transport + // Router for requests Router Router - - // TLSConfig specifies tls.Config for secure serving - TLSConfig *tls.Config - - Wait *sync.WaitGroup - // Listener may be passed if already created Listener net.Listener - // MaxConn limit connections to server + // Wait group + Wait *sync.WaitGroup + // TLSConfig specifies tls.Config for secure serving + TLSConfig *tls.Config + // Metadata holds the server metadata + Metadata metadata.Metadata + // RegisterCheck run before register server + RegisterCheck func(context.Context) error + // Codecs map to handle content-type + Codecs map[string]codec.Codec + // Id holds the id of the server + Id string + // Namespace for te server + Namespace string + // Name holds the server name + Name string + // Address holds the server address + Address string + // Advertise holds the advertie addres + Advertise string + // Version holds the server version + Version string + // SubWrappers holds the server subscribe wrappers + SubWrappers []SubscriberWrapper + // HdlrWrappers holds the handler wrappers + HdlrWrappers []HandlerWrapper + // RegisterAttempts holds the number of register attempts before error + RegisterAttempts int + // RegisterInterval holds he interval for re-register + RegisterInterval time.Duration + // RegisterTTL specifies TTL for register record + RegisterTTL time.Duration + // MaxConn limits number of connections MaxConn int - // Other options for implementations of the interface - // can be stored in a context - Context context.Context + // DeregisterAttempts holds the number of deregister attempts before error + DeregisterAttempts int } // NewOptions returns new options struct with default or passed values @@ -303,9 +315,12 @@ type HandlerOption func(*HandlerOptions) // HandlerOptions struct type HandlerOptions struct { - Internal bool + // Context holds external options + Context context.Context + // Metadata for hondler Metadata map[string]metadata.Metadata - Context context.Context + // Internal flag limits exporting to other nodes via register + Internal bool } // NewHandlerOptions creates new HandlerOptions @@ -327,13 +342,16 @@ type SubscriberOption func(*SubscriberOptions) // SubscriberOptions struct type SubscriberOptions struct { - // AutoAck defaults to true. When a handler returns - // with a nil error the message is acked. - AutoAck bool - Queue string + // Context holds the external options + Context context.Context + // Queue holds the subscribtion queue + Queue string + // AutoAck flag for auto ack messages after processing + AutoAck bool + // Internal flag limit exporting info via register Internal bool + // BodyOnly flag specifies that message without headers BodyOnly bool - Context context.Context } // NewSubscriberOptions create new SubscriberOptions diff --git a/server/request.go b/server/request.go index cd9880ee..5d2d83be 100644 --- a/server/request.go +++ b/server/request.go @@ -6,12 +6,12 @@ import ( ) type rpcMessage struct { + payload interface{} + codec codec.Codec + header metadata.Metadata topic string contentType string - payload interface{} - header metadata.Metadata body []byte - codec codec.Codec } func (r *rpcMessage) ContentType() string { diff --git a/server/subscriber.go b/server/subscriber.go index 546881f4..64a76eaa 100644 --- a/server/subscriber.go +++ b/server/subscriber.go @@ -28,19 +28,19 @@ var ( ) type handler struct { - method reflect.Value reqType reflect.Type ctxType reflect.Type + method reflect.Value } type subscriber struct { - topic string - rcvr reflect.Value + opts SubscriberOptions typ reflect.Type subscriber interface{} + rcvr reflect.Value + topic string handlers []*handler endpoints []*register.Endpoint - opts SubscriberOptions } // Is this an exported - upper case - name? diff --git a/store/options.go b/store/options.go index deddab3e..54a4cd25 100644 --- a/store/options.go +++ b/store/options.go @@ -14,28 +14,27 @@ import ( // Options contains configuration for the Store type Options struct { + // Meter used for metrics + Meter meter.Meter + // Tracer used for tracing + Tracer tracer.Tracer + // Context holds external options + Context context.Context + // Codec used to marshal/unmarshal + Codec codec.Codec + // Logger used for logging + Logger logger.Logger + // TLSConfig holds tls.TLSConfig options + TLSConfig *tls.Config // Name specifies store name Name string - // Nodes contains the addresses or other connection information of the backing storage. - // For example, an etcd implementation would contain the nodes of the cluster. - // A SQL implementation could contain one or more connection strings. - Nodes []string - // Database allows multiple isolated stores to be kept in one backend, if supported. + // Database specifies store database Database string - // Table is analag for a table in database backends or a key prefix in KV backends + // Table specifies store table Table string - // Codec that used for marshal/unmarshal value - Codec codec.Codec - // Logger the logger - Logger logger.Logger - // Meter the meter - Meter meter.Meter - // Tracer the tacer - Tracer tracer.Tracer - // TLSConfig specifies tls.Config for secure - TLSConfig *tls.Config - // Context should contain all implementation specific options - Context context.Context + // Nodes contains store address + // TODO: replace with Addrs + Nodes []string } // NewOptions creates options struct @@ -139,10 +138,14 @@ func NewReadOptions(opts ...ReadOption) ReadOptions { // ReadOptions configures an individual Read operation type ReadOptions struct { - Database string - Table string + // Context holds external options + Context context.Context + // Database holds the database name + Database string + // Table holds table name + Table string + // Namespace holds namespace Namespace string - Context context.Context } // ReadOption sets values in ReadOptions @@ -167,12 +170,18 @@ func NewWriteOptions(opts ...WriteOption) WriteOptions { // WriteOptions configures an individual Write operation type WriteOptions struct { - Database string - Table string - TTL time.Duration - Metadata metadata.Metadata + // Context holds external options + Context context.Context + // Metadata contains additional metadata + Metadata metadata.Metadata + // Database holds database name + Database string + // Table holds table name + Table string + // Namespace holds namespace Namespace string - Context context.Context + // TTL specifies key TTL + TTL time.Duration } // WriteOption sets values in WriteOptions @@ -211,10 +220,14 @@ func NewDeleteOptions(opts ...DeleteOption) DeleteOptions { // DeleteOptions configures an individual Delete operation type DeleteOptions struct { - Database string - Table string + // Context holds external options + Context context.Context + // Database holds database name + Database string + // Table holds table name + Table string + // Namespace holds namespace Namespace string - Context context.Context } // DeleteOption sets values in DeleteOptions @@ -239,18 +252,14 @@ func NewListOptions(opts ...ListOption) ListOptions { // ListOptions configures an individual List operation type ListOptions struct { - // List from the following - Database, Table string - // Prefix returns all keys that are prefixed with key - Prefix string - // Suffix returns all keys that end with key - Suffix string - // Limit limits the number of returned keys - Limit uint - // Offset when combined with Limit supports pagination - Offset uint - Namespace string Context context.Context + Database string + Prefix string + Suffix string + Namespace string + Table string + Limit uint + Offset uint } // ListOption sets values in ListOptions @@ -297,8 +306,10 @@ type ExistsOption func(*ExistsOptions) // ExistsOptions holds options for Exists method type ExistsOptions struct { + // Context holds external options + Context context.Context + // Namespace contains namespace Namespace string - Context context.Context } // NewExistsOptions helper for Exists method diff --git a/sync/memory.go b/sync/memory.go index bb6ca8d3..05c44ded 100644 --- a/sync/memory.go +++ b/sync/memory.go @@ -7,23 +7,22 @@ import ( type memorySync struct { options Options - - mtx gosync.RWMutex - locks map[string]*memoryLock + locks map[string]*memoryLock + mtx gosync.RWMutex } type memoryLock struct { - id string time time.Time - ttl time.Duration release chan bool + id string + ttl time.Duration } type memoryLeader struct { opts LeaderOptions - id string resign func(id string) error status chan bool + id string } func (m *memoryLeader) Resign() error { diff --git a/sync/options.go b/sync/options.go index 3e7b838b..4c5b6efb 100644 --- a/sync/options.go +++ b/sync/options.go @@ -10,11 +10,17 @@ import ( // Options holds the sync options type Options struct { - Nodes []string - Prefix string + // Logger used for logging Logger logger.Logger + // Tracer used for tracing Tracer tracer.Tracer - Meter meter.Meter + // Meter used for merics + Meter meter.Meter + // Prefix holds prefix? + Prefix string + // Nodes holds the nodes + // TODO: change to Addrs ? + Nodes []string } // Option func signature diff --git a/tracer/noop.go b/tracer/noop.go index ad62ec65..d4244dd3 100644 --- a/tracer/noop.go +++ b/tracer/noop.go @@ -32,9 +32,9 @@ func (t *noopTracer) Name() string { } type noopSpan struct { - name string ctx context.Context tracer Tracer + name string } func (s *noopSpan) Finish(opts ...SpanOption) { diff --git a/tracer/options.go b/tracer/options.go index 52d83ccf..374a09d3 100644 --- a/tracer/options.go +++ b/tracer/options.go @@ -14,10 +14,10 @@ type EventOption func(o *EventOptions) // Options struct type Options struct { + // Logger used for logging + Logger logger.Logger // Name of the tracer Name string - // Logger is the logger for messages - Logger logger.Logger } // Option func diff --git a/tracer/tracer.go b/tracer/tracer.go index 1c37a2eb..bd23a306 100644 --- a/tracer/tracer.go +++ b/tracer/tracer.go @@ -36,30 +36,30 @@ type Span interface { } type Label struct { - key string val interface{} + key string } func Any(k string, v interface{}) Label { - return Label{k, v} + return Label{key: k, val: v} } func String(k string, v string) Label { - return Label{k, v} + return Label{key: k, val: v} } func Int(k string, v int) Label { - return Label{k, v} + return Label{key: k, val: v} } func Int64(k string, v int64) Label { - return Label{k, v} + return Label{key: k, val: v} } func Float64(k string, v float64) Label { - return Label{k, v} + return Label{key: k, val: v} } func Bool(k string, v bool) Label { - return Label{k, v} + return Label{key: k, val: v} } diff --git a/tracer/wrapper/wrapper.go b/tracer/wrapper/wrapper.go index d1906988..e8785761 100644 --- a/tracer/wrapper/wrapper.go +++ b/tracer/wrapper/wrapper.go @@ -12,11 +12,11 @@ import ( ) type tWrapper struct { - opts Options + client.Client serverHandler server.HandlerFunc serverSubscriber server.SubscriberFunc clientCallFunc client.CallFunc - client.Client + opts Options } type ClientCallObserver func(context.Context, client.Request, interface{}, []client.CallOption, tracer.Span, error) diff --git a/util/pki/certoptions.go b/util/pki/certoptions.go index 61026967..b81027c4 100644 --- a/util/pki/certoptions.go +++ b/util/pki/certoptions.go @@ -11,17 +11,16 @@ import ( // CertOptions are passed to cert options type CertOptions struct { - IsCA bool + NotAfter time.Time + NotBefore time.Time + Parent *x509.Certificate + SerialNumber *big.Int Subject pkix.Name DNSNames []string IPAddresses []net.IP - SerialNumber *big.Int - NotBefore time.Time - NotAfter time.Time - - Parent *x509.Certificate - Pub ed25519.PublicKey - Priv ed25519.PrivateKey + Pub ed25519.PublicKey + Priv ed25519.PrivateKey + IsCA bool } // CertOption sets CertOptions diff --git a/util/pool/default.go b/util/pool/default.go index c897c796..20878127 100644 --- a/util/pool/default.go +++ b/util/pool/default.go @@ -10,18 +10,17 @@ import ( ) type pool struct { - size int - ttl time.Duration - tr transport.Transport - - sync.Mutex + tr transport.Transport conns map[string][]*poolConn + size int + ttl time.Duration + sync.Mutex } type poolConn struct { - transport.Client - id string created time.Time + transport.Client + id string } func newPool(options Options) *pool { diff --git a/util/ring/buffer.go b/util/ring/buffer.go index cf1aa6bc..ed18d20a 100644 --- a/util/ring/buffer.go +++ b/util/ring/buffer.go @@ -10,11 +10,10 @@ import ( // Buffer is ring buffer type Buffer struct { - size int - - sync.RWMutex - vals []*Entry streams map[string]*Stream + vals []*Entry + size int + sync.RWMutex } // Entry is ring buffer data entry @@ -25,12 +24,12 @@ type Entry struct { // Stream is used to stream the buffer type Stream struct { - // Id of the stream - Id string // Buffered entries Entries chan *Entry // Stop channel Stop chan bool + // Id of the stream + Id string } // Put adds a new value to ring buffer diff --git a/util/router/compile.go b/util/router/compile.go index 91d9f4ae..468c6590 100644 --- a/util/router/compile.go +++ b/util/router/compile.go @@ -8,18 +8,18 @@ const ( // Template is a compiled representation of path templates. type Template struct { - // Version is the version number of the format. - Version int - // OpCodes is a sequence of operations. + // Verb is a VERB part in the template + Verb string + // Original template (example: /v1/a_bit_of_everything) + Template string + // OpCodes is a sequence of operations OpCodes []int // Pool is a constant pool Pool []string - // Verb is a VERB part in the template. - Verb string - // Fields is a list of field paths bound in this template. + // Fields is a list of field paths bound in this template Fields []string - // Original template (example: /v1/a_bit_of_everything) - Template string + // Version is the version number of the format + Version int } // Compiler compiles utilities representation of path templates into marshallable operations. @@ -29,14 +29,8 @@ type Compiler interface { } type op struct { - // code is the opcode of the operation - code OpCode - - // str is a string operand of the code. - // operand is ignored if str is not empty. - str string - - // operand is a numeric operand of the code. + str string + code OpCode operand int } diff --git a/util/router/router.go b/util/router/router.go index 35a039b5..2bf6dcc5 100644 --- a/util/router/router.go +++ b/util/router/router.go @@ -6,8 +6,8 @@ import ( ) type apiRouter struct { - routes []router.Route router.Router + routes []router.Route } func (r *apiRouter) Lookup(...router.QueryOption) ([]router.Route, error) { diff --git a/util/router/runtime.go b/util/router/runtime.go index b08c9444..daba98fa 100644 --- a/util/router/runtime.go +++ b/util/router/runtime.go @@ -25,9 +25,10 @@ type rop struct { // Pattern is a template pattern of http request paths defined in github.com/googleapis/googleapis/google/api/http.proto. type Pattern struct { + verb string // ops is a list of operations ops []rop - // pool is a constant pool indexed by the operands or vars. + // pool is a constant pool indexed by the operands or vars pool []string // vars is a list of variables names to be bound by this pattern vars []string @@ -35,8 +36,6 @@ type Pattern struct { stacksize int // tailLen is the length of the fixed-size segments after a deep wildcard tailLen int - // verb is the VERB part of the path pattern. It is empty if the pattern does not have VERB part. - verb string // assumeColonVerb indicates whether a path suffix after a final // colon may only be interpreted as a verb. assumeColonVerb bool diff --git a/util/router/types.go b/util/router/types.go index 183eeb7c..82d5f57f 100644 --- a/util/router/types.go +++ b/util/router/types.go @@ -8,9 +8,9 @@ import ( ) type template struct { - segments []segment verb string template string + segments []segment } type segment interface { diff --git a/util/socket/pool.go b/util/socket/pool.go index 470fa3c3..462ce883 100644 --- a/util/socket/pool.go +++ b/util/socket/pool.go @@ -6,8 +6,8 @@ import ( // Pool holds the socket pool type Pool struct { - sync.RWMutex pool map[string]*Socket + sync.RWMutex } // Get socket from pool diff --git a/util/socket/socket.go b/util/socket/socket.go index edbc8dbb..05c1bc88 100644 --- a/util/socket/socket.go +++ b/util/socket/socket.go @@ -9,17 +9,12 @@ import ( // Socket is our pseudo socket for transport.Socket type Socket struct { - id string - // closed closed chan bool - // remote addr + send chan *transport.Message + recv chan *transport.Message + id string remote string - // local addr - local string - // send chan - send chan *transport.Message - // recv chan - recv chan *transport.Message + local string } // SetLocal sets the local addr diff --git a/util/stream/stream.go b/util/stream/stream.go index dbda0b8e..7f0aff8c 100644 --- a/util/stream/stream.go +++ b/util/stream/stream.go @@ -21,10 +21,9 @@ type Stream interface { type stream struct { Stream - - sync.RWMutex err error request *request + sync.RWMutex } type request struct { diff --git a/util/sync/sync.go b/util/sync/sync.go index cbf99662..6c330976 100644 --- a/util/sync/sync.go +++ b/util/sync/sync.go @@ -21,9 +21,9 @@ type Sync interface { type syncStore struct { storeOpts store.Options - syncOpts Options pendingWrites []*deque.Deque pendingWriteTickers []*time.Ticker + syncOpts Options sync.RWMutex } @@ -123,7 +123,7 @@ func (c *syncStore) Sync() error { } type internalRecord struct { + expiresAt time.Time key string value []byte - expiresAt time.Time } diff --git a/util/token/jwt/jwt.go b/util/token/jwt/jwt.go index cbc3f989..9f84470e 100644 --- a/util/token/jwt/jwt.go +++ b/util/token/jwt/jwt.go @@ -12,11 +12,10 @@ import ( // authClaims to be encoded in the JWT type authClaims struct { - Type string `json:"type"` - Scopes []string `json:"scopes"` Metadata metadata.Metadata `json:"metadata"` - jwt.StandardClaims + Type string `json:"type"` + Scopes []string `json:"scopes"` } // JWT implementation of token provider @@ -51,7 +50,7 @@ func (j *JWT) Generate(acc *auth.Account, opts ...token.GenerateOption) (*token. // generate the JWT expiry := time.Now().Add(options.Expiry) t := jwt.NewWithClaims(jwt.SigningMethodRS256, authClaims{ - acc.Type, acc.Scopes, acc.Metadata, jwt.StandardClaims{ + Type: acc.Type, Scopes: acc.Scopes, Metadata: acc.Metadata, StandardClaims: jwt.StandardClaims{ Subject: acc.ID, Issuer: acc.Issuer, ExpiresAt: expiry.Unix(), diff --git a/util/token/token.go b/util/token/token.go index 2673ad06..51bcc29a 100644 --- a/util/token/token.go +++ b/util/token/token.go @@ -25,10 +25,10 @@ type Provider interface { // Token holds the auth token type Token struct { - // The actual token - Token string `json:"token"` - // Time of token creation + // Created time of token created Created time.Time `json:"created"` - // Time of token expiry + // Expiry ime of the token Expiry time.Time `json:"expiry"` + // Token holds the actual token + Token string `json:"token"` }