Documentation ¶
Overview ¶
Package wamp defines all message types, data types, and reserved URI values defined by the WAMP specification.
Index ¶
- Constants
- Variables
- func AsBool(v interface{}) (bool, bool)
- func AsFloat64(v interface{}) (float64, bool)
- func AsInt64(v interface{}) (int64, bool)
- func AsString(v interface{}) (string, bool)
- func DictFlag(dict Dict, path []string) (bool, error)
- func DictValue(dict Dict, path []string) (interface{}, error)
- func ISO8601(t time.Time) string
- func IsGoodbyeAck(msg Message) bool
- func ListToStrings(list List) ([]string, bool)
- func NowISO8601() string
- func OptionFlag(opts Dict, optionName string) bool
- func OptionInt64(opts Dict, optionName string) int64
- func OptionString(opts Dict, optionName string) string
- type Abort
- type Authenticate
- type Call
- type Cancel
- type Challenge
- type Dict
- type Error
- type Event
- type Goodbye
- type Hello
- type ID
- type IDGen
- type Interrupt
- type Invocation
- type List
- type Message
- type MessageType
- type PassthruPayload
- type Peer
- type Publish
- type Published
- type Register
- type Registered
- type Result
- type Session
- func (s *Session) EndRecv(goodbye *Goodbye) bool
- func (s *Session) Goodbye() *Goodbye
- func (s *Session) HasFeature(role, feature string) bool
- func (s *Session) HasRole(role string) bool
- func (s *Session) Lock()
- func (s *Session) RecvDone() <-chan struct{}
- func (s *Session) String() string
- func (s *Session) Unlock()
- type Subscribe
- type Subscribed
- type SyncIDGen
- type URI
- type Unregister
- type Unregistered
- type Unsubscribe
- type Unsubscribed
- type Welcome
- type Yield
Constants ¶
const ( // Message option keywords. OptAcknowledge = "acknowledge" OptDiscloseCaller = "disclose_caller" OptDiscloseMe = "disclose_me" OptExcludeMe = "exclude_me" OptInvoke = "invoke" OptMatch = "match" OptMessage = "message" OptError = "error" OptMode = "mode" OptProcedure = "procedure" OptProgress = "progress" OptReason = "reason" OptReceiveProgress = "receive_progress" OptTimeout = "timeout" OptPPTScheme = "ppt_scheme" OptPPTSerializer = "ppt_serializer" OptPPTCipher = "ppt_cipher" OptPPTKeyId = "ppt_keyid" OptSticky = "sticky" OptForwardTimeout = "forward_timeout" // Values for URI matching mode. MatchExact = "exact" MatchPrefix = "prefix" MatchWildcard = "wildcard" // Values for call cancel mode. CancelModeKill = "kill" CancelModeKillNoWait = "killnowait" CancelModeSkip = "skip" // Values for call invocation policy. InvokeSingle = "single" InvokeRoundRobin = "roundrobin" InvokeRandom = "random" InvokeFirst = "first" InvokeLast = "last" // Options for subscriber filtering. BlacklistKey = "exclude" WhitelistKey = "eligible" )
Consts for message options and option values.
const ( // Roles RoleBroker = "broker" RoleDealer = "dealer" RoleCallee = "callee" RoleCaller = "caller" RolePublisher = "publisher" RoleSubscriber = "subscriber" // RPC features FeatureCallCanceling = "call_canceling" FeatureCallTimeout = "call_timeout" FeatureCallerIdent = "caller_identification" FeaturePatternBasedReg = "pattern_based_registration" FeatureProgCallResults = "progressive_call_results" FeatureProgCallInvocations = "progressive_call_invocations" FeatureSessionMetaAPI = "session_meta_api" FeatureRegMetaAPI = "registration_meta_api" FeatureTestamentMetaAPI = "testament_meta_api" // PubSub features FeaturePatternSub = "pattern_based_subscription" FeaturePubExclusion = "publisher_exclusion" FeaturePubIdent = "publisher_identification" FeatureSubBlackWhiteListing = "subscriber_blackwhite_listing" FeatureSubMetaAPI = "subscription_meta_api" FeatureEventHistory = "event_history" // Other features FeaturePayloadPassthruMode = "payload_passthru_mode" )
const ( // Peer provided an incorrect URI for any URI-based attribute of WAMP // message, such as realm, topic or procedure. ErrInvalidURI = URI("wamp.error.invalid_uri") // A Dealer could not perform a call, since no procedure is currently // registered under the given URI. ErrNoSuchProcedure = URI("wamp.error.no_such_procedure") // A procedure could not be registered, since a procedure with the given // URI is already registered. ErrProcedureAlreadyExists = URI("wamp.error.procedure_already_exists") // A Dealer could not perform an unregister, since the given registration // is not active. ErrNoSuchRegistration = URI("wamp.error.no_such_registration") // A Broker could not perform an unsubscribe, since the given subscription // is not active. ErrNoSuchSubscription = URI("wamp.error.no_such_subscription") // A call failed, since the given argument types or values are not // acceptable to the called procedure - in which case the Callee may throw // this error. Or a Router performing payload validation checked the // payload (args / kwargs) of a call, call result, call error or publish, // and the payload did not conform - in which case the Router may throw // this error. ErrInvalidArgument = URI("wamp.error.invalid_argument") CloseNormal = URI("wamp.close.normal") // The Peer is shutting down completely - used as a GOODBYE (or ABORT) // reason. CloseSystemShutdown = URI("wamp.close.system_shutdown") ErrSystemShutdown = CloseSystemShutdown // The Peer wants to leave the realm - used as a GOODBYE reason. CloseRealm = URI("wamp.close.close_realm") ErrCloseRealm = CloseRealm // A Peer acknowledges ending of a session - used as a GOODBYE reply // reason. CloseGoodbyeAndOut = URI("wamp.close.goodbye_and_out") ErrGoodbyeAndOut = CloseGoodbyeAndOut // A join, call, register, publish or subscribe failed, since the Peer is // not authorized to perform the operation. ErrNotAuthorized = URI("wamp.error.not_authorized") // A Dealer or Broker could not determine if the Peer is authorized to // perform a join, call, register, publish or subscribe, since the // authorization operation itself failed. E.g. a custom authorizer ran // into an error. ErrAuthorizationFailed = URI("wamp.error.authorization_failed") // Something failed with the authentication itself, that is, authentication // could not run to end. * ErrAuthenticationFailed = URI("wamp.error.authentication_failed") // Peer wanted to join a non-existing realm (and the Router did not allow // to auto-create the realm) ErrNoSuchRealm = URI("wamp.error.no_such_realm") // A Peer was to be authenticated under a Role that does not (or no longer) // exists on the Router. For example, the Peer was successfully // authenticated, but the Role configured does not exists - hence there is // some misconfiguration in the Router. ErrNoSuchRole = URI("wamp.error.no_such_role") // No authentication method the peer offered is available or active. * ErrNoAuthMethod = URI("wamp.error.no_auth_method") // A Dealer or Callee canceled a call previously issued. ErrCanceled = URI("wamp.error.canceled") // A Dealer canceled a call due to time out ErrTimeout = URI("wamp.error.timeout") // A Peer requested an interaction with an option that was disallowed by // the Router. ErrOptionNotAllowed = URI("wamp.error.option_not_allowed") // A Dealer could not perform a call, since a procedure with the given URI // is registered, but Callee Black- and Whitelisting and/or Caller // Exclusion lead to the exclusion of (any) Callee providing the procedure. ErrNoEligibleCallee = URI("wamp.error.no_eligible_callee") // A Router rejected client request to disclose its identity. ErrOptionDisallowedDiscloseMe = URI("wamp.error.option_disallowed.disclose_me") // A Router encountered a network failure. ErrNetworkFailure = URI("wamp.error.network_failure") // A Peer received invalid WAMP protocol message. ErrProtocolViolation = URI("wamp.error.protocol_violation") // A Peer tries to use a feature that is not supported ErrFeatureNotSupported = URI("wamp.error.feature_not_supported") // Fired when a session joins a realm on the router. MetaEventSessionOnJoin = URI("wamp.session.on_join") // Fired when a session leaves a realm on the router or is disconnected. MetaEventSessionOnLeave = URI("wamp.session.on_leave") // Obtains the number of sessions currently attached to the realm. MetaProcSessionCount = URI("wamp.session.count") // Retrieves a list of the session IDs for all sessions currently attached // to the realm. MetaProcSessionList = URI("wamp.session.list") // Retrieves information on a specific session. MetaProcSessionGet = URI("wamp.session.get") // Kill a single session identified by session ID. MetaProcSessionKill = URI("wamp.session.kill") // Kill all currently connected sessions that have the specified authid. MetaProcSessionKillByAuthid = URI("wamp.session.kill_by_authid") // Kill all currently connected sessions that have the specified authrole. MetaProcSessionKillByAuthrole = URI("wamp.session.kill_by_authrole") // Kill all currently connected sessions in the caller's realm. MetaProcSessionKillAll = URI("wamp.session.kill_all") // Modify details of session identified by session ID (non-standard). MetaProcSessionModifyDetails = URI("wamp.session.modify_details") // No session with the given ID exists on the router. ErrNoSuchSession = URI("wamp.error.no_such_session") // Fired when a registration is created through a registration request for // an URI which was previously without a registration. MetaEventRegOnCreate = URI("wamp.registration.on_create") // Fired when a Callee session is added to a registration. MetaEventRegOnRegister = URI("wamp.registration.on_register") // Fired when a Callee session is removed from a registration. MetaEventRegOnUnregister = URI("wamp.registration.on_unregister") // Fired when a registration is deleted after the last Callee session // attached to it has been removed. MetaEventRegOnDelete = URI("wamp.registration.on_delete") // Retrieves registration IDs listed according to match policies MetaProcRegList = URI("wamp.registration.list") // Obtains the registration (if any) managing a procedure, according to // some match policy. MetaProcRegLookup = URI("wamp.registration.lookup") // Obtains the registration best matching a given procedure URI. MetaProcRegMatch = URI("wamp.registration.match") // Retrieves information on a particular registration. MetaProcRegGet = URI("wamp.registration.get") // Retrieves a list of session IDs for sessions currently attached to the // registration. MetaProcRegListCallees = URI("wamp.registration.list_callees") // Obtains the number of sessions currently attached to the registration. MetaProcRegCountCallees = URI("wamp.registration.count_callees") // Fired when a subscription is created through a subscription request for // a topic which was previously without subscribers. MetaEventSubOnCreate = URI("wamp.subscription.on_create") // Fired when a session is added to a subscription. MetaEventSubOnSubscribe = URI("wamp.subscription.on_subscribe") // Fired when a session is removed from a subscription. MetaEventSubOnUnsubscribe = URI("wamp.subscription.on_unsubscribe") // Fired when a subscription is deleted after the last session attached to // it has been removed. MetaEventSubOnDelete = URI("wamp.subscription.on_delete") // Retrieves subscription IDs listed according to match policies. MetaProcSubList = URI("wamp.subscription.list") // Obtains the subscription (if any) managing a topic, according to some // match policy. MetaProcSubLookup = URI("wamp.subscription.lookup") // Retrieves a list of IDs of subscriptions matching a topic URI, // irrespective of match policy. MetaProcSubMatch = URI("wamp.subscription.match") // Retrieves information on a particular subscription. MetaProcSubGet = URI("wamp.subscription.get") // Retrieves a list of session IDs for sessions currently attached to the // subscription. MetaProcSubListSubscribers = URI("wamp.subscription.list_subscribers") // Obtains the number of sessions currently attached to the subscription. MetaProcSubCountSubscribers = URI("wamp.subscription.count_suscribers") // Retrieves events history for subscription MetaProcEventHistory = URI("wamp.subscription.get_events") // Add a Testament which will be published on a particular topic when the // Session is detached or destroyed. MetaProcSessionAddTestament = URI("wamp.session.add_testament") // Remove the Testaments for that Session, either for when it is detached // or destroyed. MetaProcSessionFlushTestaments = URI("wamp.session.flush_testaments") // -- Nexus Specific URIs for internal use InternalProgressiveOmitResult = URI("progressive.call.omit_result") )
Predefined URIs
http://wamp-proto.org/static/rfc/draft-oberstet-hybi-crossbar-wamp.html#predefined-uris
Variables ¶
var ( // NoGoodbye indicates that no Goodbye message was sent out NoGoodbye = &Goodbye{} )
Functions ¶
func DictFlag ¶
DictFlag returns the bool specified by the dot-separated path.
To specify the path using a dot-separated string, call like this:
DictFlag(dict, strings.Split(path, "."))
For example: "roles.subscriber.features.publisher_identification" returns the value of the publisher_identification feature. An error is returned if the value is not present or is not a boolean type.
func DictValue ¶
DictValue returns the value specified by the slice of path elements.
To specify the path using a dot-separated string, call like this:
DictValue(dict, strings.Split(path, "."))
For example, the path []string{"roles","callee","features","call_timeout"} returns the value of the call_timeout feature as interface{}. An error is returned if the value is not present.
func IsGoodbyeAck ¶
IsGoodbyeAck checks if the message is an ack to end of session. This is used by transports to avoid logging an error if unable to send a goodbye acknowledgment to a client, since the client may not have waited for the acknowledgment.
func ListToStrings ¶
ListToStrings converts a List to a slice of string. Returns the string slice and a boolean indicating if the conversion was successful.
func NowISO8601 ¶
func NowISO8601() string
NowISO8601 returns the current time as an ISO8601 formatted string.
func OptionFlag ¶
OptionFlag returns named value as bool; false if missing or not bool type.
func OptionInt64 ¶
OptionInt64 returns named value as int64; 0 if missing or not integer type.
func OptionString ¶
OptionString returns named value as string; empty string if missing or not string type.
Types ¶
type Abort ¶
Sent by a Peer to abort the opening of a WAMP session. No response is expected.
[ABORT, Details|dict, Reason|uri]
func (*Abort) MessageType ¶
func (msg *Abort) MessageType() MessageType
type Authenticate ¶
The AUTHENTICATE message is used with certain Authentication Methods. A Client having received a challenge is expected to respond by sending a signature or token.
[AUTHENTICATE, Signature|string, Extra|dict]
func (*Authenticate) MessageType ¶
func (msg *Authenticate) MessageType() MessageType
type Call ¶
type Call struct { Request ID Options Dict Procedure URI Arguments List `wamp:"omitempty"` ArgumentsKw Dict `wamp:"omitempty"` }
When a Caller wishes to call a remote procedure, it sends a CALL message to a Dealer:
[CALL, Request|id, Options|dict, Procedure|uri] [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list] [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list,
ArgumentsKw|dict]
func (*Call) MessageType ¶
func (msg *Call) MessageType() MessageType
type Cancel ¶
The CANCEL message is used with the Call Canceling advanced feature. A Caller can cancel an issued call actively by sending a cancel message to the Dealer.
[CANCEL, CALL.Request|id, Options|dict]
func (*Cancel) MessageType ¶
func (msg *Cancel) MessageType() MessageType
type Challenge ¶
The CHALLENGE message is used with certain Authentication Methods. During authenticated session establishment, a Router sends a challenge message.
[CHALLENGE, AuthMethod|string, Extra|dict]
func (*Challenge) MessageType ¶
func (msg *Challenge) MessageType() MessageType
type Dict ¶
type Dict map[string]interface{}
Dict is a dictionary that maps keys to objects in a WAMP message.
func DictChild ¶
Return the child dictionary for the given key, or nil if not present.
If the child is not a Dict, an attempt is made to convert it. The dict is not modified since features may be looked up cuncurrently for the same session.
func NormalizeDict ¶
func NormalizeDict(v interface{}) Dict
NormalizeDict takes a dict and creates a new normalized dict where all map[string]xxx are converted to Dict. Values that cannot be converted, or are already the correct map type, remain the same.
This is used for initial conversion of hello details. The original dict is not mutated.
type Error ¶
type Error struct { Type MessageType Request ID Details Dict Error URI Arguments List `wamp:"omitempty"` ArgumentsKw Dict `wamp:"omitempty"` }
Error reply sent by a Peer as an error response to different kinds of requests.
[ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri] [ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri,
Arguments|list]
[ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri,
Arguments|list, ArgumentsKw|dict]
func (*Error) MessageType ¶
func (msg *Error) MessageType() MessageType
type Event ¶
type Event struct { Subscription ID Publication ID Details Dict Arguments List `wamp:"omitempty"` ArgumentsKw Dict `wamp:"omitempty"` }
Event dispatched by Broker to Subscribers for subscriptions the event was matching.
[EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict] [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict,
PUBLISH.Arguments|list]
[EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict,
PUBLISH.Arguments|list, PUBLISH.ArgumentsKw|dict]
func (*Event) MessageType ¶
func (msg *Event) MessageType() MessageType
type Goodbye ¶
Sent by a Peer to close a previously opened WAMP session. Must be echo'ed by the receiving Peer.
[GOODBYE, Details|dict, Reason|uri]
func (*Goodbye) MessageType ¶
func (msg *Goodbye) MessageType() MessageType
type Hello ¶
Sent by a Client to initiate opening of a WAMP session to a Router attaching to a Realm.
[HELLO, Realm|uri, Details|dict]
func (*Hello) MessageType ¶
func (msg *Hello) MessageType() MessageType
type IDGen ¶
type IDGen struct {
// contains filtered or unexported fields
}
IDGen is generator for WAMP request IDs. Create with new(IDGen).
WAMP request IDs are sequential per WAMP session, starting at 1 and wrapping around at 2**53 (both value are inclusive [1, 2**53]).
The reason to choose the specific upper bound is that 2^53 is the largest integer such that this integer and all (positive) smaller integers can be represented exactly in IEEE-754 doubles. Some languages (e.g. JavaScript) use doubles as their sole number type.
See https://github.com/wamp-proto/wamp-proto/blob/master/spec/basic.md#ids
type Interrupt ¶
The INTERRUPT message is used with the Call Canceling advanced feature. Upon receiving a cancel for a pending call, a Dealer will issue an interrupt to the Callee.
[INTERRUPT, INVOCATION.Request|id, Options|dict]
func (*Interrupt) MessageType ¶
func (msg *Interrupt) MessageType() MessageType
type Invocation ¶
type Invocation struct { Request ID Registration ID Details Dict Arguments List `wamp:"omitempty"` ArgumentsKw Dict `wamp:"omitempty"` }
If the Dealer is able to fulfill (mediate) the call and it allows the call, it sends a INVOCATION message to the respective Callee implementing the procedure:
[INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict] [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict,
CALL.Arguments|list]
[INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict,
CALL.Arguments|list, CALL.ArgumentsKw|dict]
func (*Invocation) MessageType ¶
func (msg *Invocation) MessageType() MessageType
type Message ¶
type Message interface {
MessageType() MessageType
}
Message is a generic container for a WAMP message.
func NewMessage ¶
func NewMessage(t MessageType) Message
NewMessage returns an empty message of the type specified.
type MessageType ¶
type MessageType int
const ( // // | Pub | Brk | Subs | Calr | Dealr| Calee| // // | ---- | ---- | ---- | ---- | ---- | ---- | HELLO MessageType = 1 // | Tx | Rx | Tx | Tx | Rx | Tx | WELCOME MessageType = 2 // | Rx | Tx | Rx | Rx | Tx | Rx | ABORT MessageType = 3 // | Rx | TxRx | Rx | Rx | TxRx | Rx | CHALLENGE MessageType = 4 // | | | | | | | AUTHENTICATE MessageType = 5 // | | | | | | | GOODBYE MessageType = 6 // | TxRx | TxRx | TxRx | TxRx | TxRx | TxRx | // HEARTBEAT MessageType = 7 | | | | | | | ERROR MessageType = 8 // | Rx | Tx | Rx | Rx | TxRx | TxRx | // | | | | | | | PUBLISH MessageType = 16 // | Tx | Rx | | | | | PUBLISHED MessageType = 17 // | Rx | Tx | | | | | // | | | | | | | SUBSCRIBE MessageType = 32 //| | Rx | Tx | | | | SUBSCRIBED MessageType = 33 //| | Tx | Rx | | | | UNSUBSCRIBE MessageType = 34 //| | Rx | Tx | | | | UNSUBSCRIBED MessageType = 35 //| | Tx | Rx | | | | EVENT MessageType = 36 //| | Tx | Rx | | | | // | | | | | | | CALL MessageType = 48 // | | | | Tx | Rx | | CANCEL MessageType = 49 // | | | | Tx | Rx | | RESULT MessageType = 50 // | | | | Rx | Tx | | // | | | | | | | REGISTER MessageType = 64 //| | | | | Rx | Tx | REGISTERED MessageType = 65 //| | | | | Tx | Rx | UNREGISTER MessageType = 66 //| | | | | Rx | Tx | UNREGISTERED MessageType = 67 //| | | | | Tx | Rx | INVOCATION MessageType = 68 //| | | | | Tx | Rx | INTERRUPT MessageType = 69 //| | | | | Tx | Rx | YIELD MessageType = 70 //| | | | | Rx | Tx | )
Message Codes and Direction
func (MessageType) String ¶
func (mt MessageType) String() string
String returns the message type string.
type PassthruPayload ¶ added in v3.0.5
type PassthruPayload struct { Arguments List `wamp:"omitempty" codec:"args"` ArgumentsKw Dict `wamp:"omitempty" codec:"kwargs"` }
Payload format for using in Payload Passthru Mode
type Peer ¶
type Peer interface { // Closes the peer connection and the channel returned from Recv(). Close() // IsLocal returns true if the session is local. IsLocal() bool // Recv returns a channel of messages from the peer. Recv() <-chan Message // Send returns the peer's outgoing message channel. Send() chan<- Message }
Peer is the interface implemented by endpoints communicating via WAMP.
type Publish ¶
type Publish struct { Request ID Options Dict Topic URI Arguments List `wamp:"omitempty"` ArgumentsKw Dict `wamp:"omitempty"` }
Sent by a Publisher to a Broker to publish an event.
[PUBLISH, Request|id, Options|dict, Topic|uri] [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list] [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list,
ArgumentsKw|dict]
func (*Publish) MessageType ¶
func (msg *Publish) MessageType() MessageType
type Published ¶
Acknowledge sent by a Broker to a Publisher for acknowledged publications.
[PUBLISHED, PUBLISH.Request|id, Publication|id]
func (*Published) MessageType ¶
func (msg *Published) MessageType() MessageType
type Register ¶
A Callee announces the availability of an endpoint implementing a procedure with a Dealer by sending a REGISTER message:
[REGISTER, Request|id, Options|dict, Procedure|uri]
func (*Register) MessageType ¶
func (msg *Register) MessageType() MessageType
type Registered ¶
If the Dealer is able to fulfill and allowing the registration, it answers by sending a REGISTERED message to the Callee:
[REGISTERED, REGISTER.Request|id, Registration|id]
func (*Registered) MessageType ¶
func (msg *Registered) MessageType() MessageType
type Result ¶
type Result struct { Request ID Details Dict Arguments List `wamp:"omitempty"` ArgumentsKw Dict `wamp:"omitempty"` }
The Dealer will then send a RESULT message to the original Caller:
[RESULT, CALL.Request|id, Details|dict] [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list] [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list,
YIELD.ArgumentsKw|dict]
func (*Result) MessageType ¶
func (msg *Result) MessageType() MessageType
type Session ¶
type Session struct { // Interface for communicating with connected peer. Peer // Unique session ID. ID ID // Details about session. Details Dict // contains filtered or unexported fields }
Session is an active WAMP session. It associates a session ID and details with a connected Peer, which is the remote side of the session. So, if the session owned by the router, then the Peer is the connected client.
func NewSession ¶
NewSession creates a new session. The greetDetails is the details from the HELLO or WELCOME message, from which roles and features are extracted.
func (*Session) EndRecv ¶
EndRecv tells the session to signal messages handlers to stop receiving messages from this session. An optional goodbye message may be provided for the message handler to send to the peer. It is the responsibility of the message handler to send the goodbye message, so that this can be coordinated with exiting the message handler for other reasons.
func (*Session) Goodbye ¶
If RecvDone is not yet closed, Goodbye returns nil. If RecvDone is closed, Goodbye returns the GOODBYE message that was supplied when RecvEnd was called.
func (*Session) HasFeature ¶
HasFeature returns true if the session has the specified feature for the specified role.
func (*Session) Lock ¶
func (s *Session) Lock()
Lock locks the session to protect against concurrent updates.
func (*Session) RecvDone ¶
func (s *Session) RecvDone() <-chan struct{}
RecvDone returns a channel that is closed when this session has been ended by calling EndRecv.
type Subscribe ¶
Subscribe request sent by a Subscriber to a Broker to subscribe to a topic.
[SUBSCRIBE, Request|id, Options|dict, Topic|uri]
func (*Subscribe) MessageType ¶
func (msg *Subscribe) MessageType() MessageType
type Subscribed ¶
Acknowledge sent by a Broker to a Subscriber to acknowledge a subscription.
[SUBSCRIBED, SUBSCRIBE.Request|id, Subscription|id]
func (*Subscribed) MessageType ¶
func (msg *Subscribed) MessageType() MessageType
type SyncIDGen ¶
type SyncIDGen struct { IDGen // contains filtered or unexported fields }
SyncIDGen is a concurrent-safe IDGen. Create with new(SyncIDGen).
type URI ¶
type URI string
URIs are dot-separated identifiers, where each component *should* only contain letters, numbers or underscores.
See the documentation for specifics: https://github.com/wamp-proto/wamp-proto/blob/master/rfc/text/basic/bp_identifiers.md#uris-uris
func (URI) PrefixMatch ¶
PrefixMatch returns true if the receiver URI matches the specified prefix.
func (URI) ValidURI ¶
ValidURI returns true if the URI complies with formatting rules determined by the strict flag and match type.
func (URI) WildcardMatch ¶
WildcardMatch returns true if the receiver URI matches the specified wildcard pattern.
type Unregister ¶
When a Callee is no longer willing to provide an implementation of the registered procedure, it sends an UNREGISTER message to the Dealer:
[UNREGISTER, Request|id, REGISTERED.Registration|id]
func (*Unregister) MessageType ¶
func (msg *Unregister) MessageType() MessageType
type Unregistered ¶
type Unregistered struct {
Request ID
}
Upon successful unregistration, the Dealer sends an UNREGISTERED message to the Callee:
[UNREGISTERED, UNREGISTER.Request|id]
func (*Unregistered) MessageType ¶
func (msg *Unregistered) MessageType() MessageType
type Unsubscribe ¶
Unsubscribe request sent by a Subscriber to a Broker to unsubscribe a subscription.
[UNSUBSCRIBE, Request|id, SUBSCRIBED.Subscription|id]
func (*Unsubscribe) MessageType ¶
func (msg *Unsubscribe) MessageType() MessageType
type Unsubscribed ¶
type Unsubscribed struct {
Request ID
}
Acknowledge sent by a Broker to a Subscriber to acknowledge unsubscription.
[UNSUBSCRIBED, UNSUBSCRIBE.Request|id]
func (*Unsubscribed) MessageType ¶
func (msg *Unsubscribed) MessageType() MessageType
type Welcome ¶
Sent by a Router to accept a Client. The WAMP session is now open.
[WELCOME, Session|id, Details|dict]
func (*Welcome) MessageType ¶
func (msg *Welcome) MessageType() MessageType
type Yield ¶
type Yield struct { Request ID Options Dict Arguments List `wamp:"omitempty"` ArgumentsKw Dict `wamp:"omitempty"` }
If the Callee is able to successfully process and finish the execution of the call, it answers by sending a YIELD message to the Dealer:
[YIELD, INVOCATION.Request|id, Options|dict] [YIELD, INVOCATION.Request|id, Options|dict, Arguments|list] [YIELD, INVOCATION.Request|id, Options|dict, Arguments|list,
ArgumentsKw|dict]
func (*Yield) MessageType ¶
func (msg *Yield) MessageType() MessageType