Documentation
¶
Index ¶
- Constants
- Variables
- func AsInitiatorCall(context view.Context, initiator view.View, ...) (interface{}, error)
- func AsInitiatorView(context view.Context, initiator view.View) (interface{}, error)
- func AsResponder(context view.Context, session view.Session, ...) (interface{}, error)
- func GenerateBytesUUID() []byte
- func GenerateUUID() string
- func GetIdentifier(f view.View) string
- func GetName(f view.View) string
- func Initiate(context view.Context, initiator view.View) (interface{}, error)
- func NewContext(context context.Context, sp services.Provider, contextID string, ...) (*ctx, error)
- func NewContextForInitiator(contextID string, context context.Context, sp services.Provider, ...) (*ctx, error)
- func RunCall(context view.Context, v func(context view.Context) (interface{}, error)) (interface{}, error)
- func RunView(context view.Context, view view.View, opts ...view.RunViewOption)
- type CommLayer
- type EndpointService
- type Factory
- type IdentityProvider
- type LocalIdentityChecker
- type Manager
- func (cm *Manager) Context(contextID string) (view.Context, error)
- func (cm *Manager) ExistResponderForCaller(caller string) (view.View, view.Identity, error)
- func (cm *Manager) GetIdentifier(f view.View) string
- func (cm *Manager) GetResponder(initiatedBy interface{}) (view.View, error)
- func (cm *Manager) GetService(typ reflect.Type) (interface{}, error)
- func (cm *Manager) Initiate(id string, ctx context.Context) (interface{}, error)
- func (cm *Manager) InitiateContext(view view.View) (view.Context, error)
- func (cm *Manager) InitiateContextFrom(ctx context.Context, view view.View, id view.Identity, contextID string) (view.Context, error)
- func (cm *Manager) InitiateContextWithIdentity(view view.View, id view.Identity) (view.Context, error)
- func (cm *Manager) InitiateContextWithIdentityAndID(view view.View, id view.Identity, contextID string) (view.Context, error)
- func (cm *Manager) InitiateView(view view.View, ctx context.Context) (interface{}, error)
- func (cm *Manager) InitiateViewWithIdentity(view view.View, id view.Identity, ctx context.Context) (interface{}, error)
- func (cm *Manager) NewView(id string, in []byte) (f view.View, err error)
- func (cm *Manager) RegisterFactory(id string, factory Factory) error
- func (cm *Manager) RegisterResponder(responder view.View, initiatedBy interface{}) error
- func (cm *Manager) RegisterResponderWithIdentity(responder view.View, id view.Identity, initiatedBy interface{}) error
- func (cm *Manager) ResolveIdentities(endpoints ...string) ([]view.Identity, error)
- func (cm *Manager) Start(ctx context.Context)
- type Metrics
- type MockContext
- func (c *MockContext) Context() context.Context
- func (c *MockContext) GetService(v interface{}) (interface{}, error)
- func (c *MockContext) GetSession(caller view.View, party view.Identity, boundToViews ...view.View) (view.Session, error)
- func (c *MockContext) GetSessionByID(id string, party view.Identity) (view.Session, error)
- func (c *MockContext) ID() string
- func (c *MockContext) Initiator() view.View
- func (c *MockContext) IsMe(id view.Identity) bool
- func (c *MockContext) Me() view.Identity
- func (c *MockContext) OnError(callback func())
- func (c *MockContext) RespondToAs(initiator view.View, responder view.Identity, r view.View)
- func (c *MockContext) RunView(view view.View, opts ...view.RunViewOption) (interface{}, error)
- func (c *MockContext) Session() view.Session
- func (c *MockContext) StartSpan(string, ...trace.SpanStartOption) trace.Span
- func (c *MockContext) StartSpanFrom(context.Context, string, ...trace.SpanStartOption) (context.Context, trace.Span)
- type Registry
- func (cm *Registry) ExistResponderForCaller(caller string) (view.View, view.Identity, error)
- func (cm *Registry) GetIdentifier(f view.View) string
- func (cm *Registry) GetResponder(initiatedBy interface{}) (view.View, error)
- func (cm *Registry) GetView(id string) (view.View, error)
- func (cm *Registry) NewView(id string, in []byte) (f view.View, err error)
- func (cm *Registry) RegisterFactory(id string, factory Factory) error
- func (cm *Registry) RegisterResponder(responder view.View, initiatedBy interface{}) error
- func (cm *Registry) RegisterResponderFactory(factory Factory, initiatedBy interface{}) error
- func (cm *Registry) RegisterResponderWithIdentity(responder view.View, id view.Identity, initiatedBy interface{}) error
- type Responders
- type ServiceProvider
- type Session
- type SessionFactory
- type Sessions
- func (s *Sessions) Delete(viewId string, party view.Identity)
- func (s *Sessions) Get(viewId string, party view.Identity) view.Session
- func (s *Sessions) GetFirstOpen(viewId string, parties iterators.Iterator[view.Identity]) (view.Session, view.Identity)
- func (s *Sessions) GetSessionIDs() []string
- func (s *Sessions) Lock()
- func (s *Sessions) Put(viewId string, party view.Identity, session view.Session)
- func (s *Sessions) PutDefault(party view.Identity, session view.Session)
- func (s *Sessions) Reset()
- func (s *Sessions) Unlock()
- type Stream
Constants ¶
Variables ¶
var (
ServiceNotFound = errors.New("service not found")
)
Functions ¶
func AsInitiatorCall ¶
func AsInitiatorCall(context view.Context, initiator view.View, v func(context view.Context) (interface{}, error)) (interface{}, error)
AsInitiatorCall can be used by a responder to behave temporarily as an initiator. Recall that an initiator is characterized by having an initiator (`context.Initiator()`) set when the initiator is instantiated. AsInitiatorCall sets context.Initiator() to the passed initiator, and executes the passed view call. TODO: what happens to the sessions already openend with a different initiator (maybe an empty one)?
func AsInitiatorView ¶
AsInitiatorView can be used by a responder to behave temporarily as an initiator. Recall that an initiator is characterized by having an initiator (`context.Initiator()`) set when the initiator is instantiated. AsInitiatorView sets context.Initiator() to the passed initiator, and executes it.
func AsResponder ¶
func AsResponder(context view.Context, session view.Session, v func(context view.Context) (interface{}, error)) (interface{}, error)
AsResponder can be used by an initiator to behave temporarily as a responder. Recall that a responder is characterized by having a default session (`context.Session()`) established by an initiator.
func GenerateBytesUUID ¶ added in v0.4.1
func GenerateBytesUUID() []byte
GenerateBytesUUID returns a UUID based on RFC 4122 returning the generated bytes
func GenerateUUID ¶ added in v0.4.1
func GenerateUUID() string
GenerateUUID returns a UUID based on RFC 4122
func GetIdentifier ¶ added in v0.4.1
func Initiate ¶
Initiate initiates a new protocol whose initiator's view is the passed one. The execution happens in a freshly created context. This is a shortcut for `view.GetManager(context).InitiateView(initiator)`.
func NewContext ¶ added in v0.4.1
func NewContext( context context.Context, sp services.Provider, contextID string, sessionFactory SessionFactory, resolver EndpointService, idProvider IdentityProvider, party view.Identity, session view.Session, caller view.Identity, tracer trace.Tracer, localIdentityChecker LocalIdentityChecker, ) (*ctx, error)
func NewContextForInitiator ¶ added in v0.4.1
func NewContextForInitiator( contextID string, context context.Context, sp services.Provider, sessionFactory SessionFactory, resolver EndpointService, idProvider IdentityProvider, party view.Identity, initiator view.View, tracer trace.Tracer, localIdentityChecker LocalIdentityChecker, ) (*ctx, error)
Types ¶
type CommLayer ¶ added in v0.4.1
type CommLayer interface {
NewSessionWithID(sessionID, contextID, endpoint string, pkid []byte, caller view.Identity, msg *view.Message) (view.Session, error)
NewSession(caller string, contextID string, endpoint string, pkid []byte) (view.Session, error)
MasterSession() (view.Session, error)
DeleteSessions(ctx context.Context, sessionID string)
}
func GetCommLayer ¶ added in v0.4.1
type EndpointService ¶ added in v0.4.1
type Factory ¶ added in v0.4.1
type Factory interface {
// NewView returns an instance of the View interface build using the passed argument.
NewView(in []byte) (view.View, error)
}
Factory is used to create instances of the View interface
type IdentityProvider ¶ added in v0.4.1
type LocalIdentityChecker ¶ added in v0.4.1
type Manager ¶ added in v0.4.1
type Manager struct {
// contains filtered or unexported fields
}
func GetManager ¶ added in v0.4.1
GetManager returns an instance of *Manager, if available, an error otherwise
func NewManager ¶ added in v0.4.1
func NewManager( serviceProvider services.Provider, commLayer CommLayer, endpointService EndpointService, identityProvider IdentityProvider, registry *Registry, tracerProvider tracing.Provider, metricsProvider metrics.Provider, localIdentityChecker LocalIdentityChecker, ) *Manager
func (*Manager) Context ¶ added in v0.4.1
Context returns a view.Context for a given contextID. If the context does not exist, an error is returned.
func (*Manager) ExistResponderForCaller ¶ added in v0.4.1
func (*Manager) GetIdentifier ¶ added in v0.4.1
func (*Manager) GetResponder ¶ added in v0.4.1
func (*Manager) GetService ¶ added in v0.4.1
func (*Manager) InitiateContext ¶ added in v0.4.1
func (*Manager) InitiateContextFrom ¶ added in v0.4.1
func (*Manager) InitiateContextWithIdentity ¶ added in v0.4.1
func (*Manager) InitiateContextWithIdentityAndID ¶ added in v0.4.1
func (*Manager) InitiateView ¶ added in v0.4.1
func (*Manager) InitiateViewWithIdentity ¶ added in v0.4.1
func (*Manager) RegisterFactory ¶ added in v0.4.1
func (*Manager) RegisterResponder ¶ added in v0.4.1
func (*Manager) RegisterResponderWithIdentity ¶ added in v0.4.1
func (*Manager) ResolveIdentities ¶ added in v0.4.1
type MockContext ¶ added in v0.3.0
func (*MockContext) Context ¶ added in v0.3.0
func (c *MockContext) Context() context.Context
func (*MockContext) GetService ¶ added in v0.3.0
func (c *MockContext) GetService(v interface{}) (interface{}, error)
func (*MockContext) GetSession ¶ added in v0.3.0
func (*MockContext) GetSessionByID ¶ added in v0.3.0
func (*MockContext) ID ¶ added in v0.3.0
func (c *MockContext) ID() string
func (*MockContext) Initiator ¶ added in v0.3.0
func (c *MockContext) Initiator() view.View
func (*MockContext) Me ¶ added in v0.3.0
func (c *MockContext) Me() view.Identity
func (*MockContext) OnError ¶ added in v0.3.0
func (c *MockContext) OnError(callback func())
func (*MockContext) RespondToAs ¶ added in v0.3.0
func (*MockContext) RunView ¶ added in v0.3.0
func (c *MockContext) RunView(view view.View, opts ...view.RunViewOption) (interface{}, error)
func (*MockContext) Session ¶ added in v0.3.0
func (c *MockContext) Session() view.Session
func (*MockContext) StartSpan ¶ added in v0.4.0
func (c *MockContext) StartSpan(string, ...trace.SpanStartOption) trace.Span
func (*MockContext) StartSpanFrom ¶ added in v0.4.0
func (c *MockContext) StartSpanFrom(context.Context, string, ...trace.SpanStartOption) (context.Context, trace.Span)
type Registry ¶ added in v0.4.1
type Registry struct {
// contains filtered or unexported fields
}
func GetRegistry ¶ added in v0.4.1
GetRegistry returns an instance of the view registry. It panics, if no instance is found.
func NewRegistry ¶ added in v0.4.1
func NewRegistry() *Registry
func (*Registry) ExistResponderForCaller ¶ added in v0.4.1
func (*Registry) GetIdentifier ¶ added in v0.4.1
func (*Registry) GetResponder ¶ added in v0.4.1
func (*Registry) RegisterFactory ¶ added in v0.4.1
func (*Registry) RegisterResponder ¶ added in v0.4.1
func (*Registry) RegisterResponderFactory ¶ added in v0.4.1
type Responders ¶ added in v0.3.0
type ServiceProvider ¶ added in v0.4.1
type ServiceProvider struct {
// contains filtered or unexported fields
}
func NewServiceProvider ¶ added in v0.4.1
func NewServiceProvider() *ServiceProvider
func (*ServiceProvider) GetService ¶ added in v0.4.1
func (sp *ServiceProvider) GetService(v interface{}) (interface{}, error)
func (*ServiceProvider) RegisterService ¶ added in v0.4.1
func (sp *ServiceProvider) RegisterService(service interface{}) error
func (*ServiceProvider) String ¶ added in v0.4.1
func (sp *ServiceProvider) String() string
type SessionFactory ¶ added in v0.4.1
type SessionFactory interface {
NewSessionWithID(sessionID, contextID, endpoint string, pkid []byte, caller view.Identity, msg *view.Message) (view.Session, error)
NewSession(caller string, contextID string, endpoint string, pkid []byte) (view.Session, error)
DeleteSessions(ctx context.Context, sessionID string)
}
SessionFactory is used to create new communication sessions
type Sessions ¶ added in v0.4.1
type Sessions struct {
// contains filtered or unexported fields
}