G-Earth/Extensions/xabbo_1.1.4/extension/Xabbo.Common.xml
Administrator 368b92d87a G-Earth 1.5.4 beta 22 - Initial release
Komplettes G-Earth Paket inkl. JRE, Extensions und Tools.

Extensions:
- G-BuildTools, G-Click Ultimate, G-Loader, G-Manipulate
- G-Presets, G-Translator, G-Trigger, G-itemViewer
- Market Utils, Packet Info Explorer, Plants
- RandomRoomVisitor, RoomLogger, Sanbovir Photo Inspector
- SpyFriends, WallAligner, XabboScripter, xabbo
2026-03-16 09:45:04 +01:00

2284 lines
109 KiB
XML

<?xml version="1.0"?>
<doc>
<assembly>
<name>Xabbo.Common</name>
</assembly>
<members>
<member name="T:Xabbo.Client">
<summary>
Represents a client type, identifier and version.
</summary>
</member>
<member name="M:Xabbo.Client.#ctor(Xabbo.ClientType,System.String,System.String)">
<summary>
Represents a client type, identifier and version.
</summary>
</member>
<member name="T:Xabbo.ClientType">
<summary>
Represents a type of game client.
</summary>
</member>
<member name="F:Xabbo.ClientType.None">
<summary>
Represents no particular client.
</summary>
</member>
<member name="F:Xabbo.ClientType.Unity">
<summary>
Represents the Unity client.
</summary>
</member>
<member name="F:Xabbo.ClientType.Flash">
<summary>
Represents the Flash client.
</summary>
</member>
<member name="F:Xabbo.ClientType.Shockwave">
<summary>
Represents the Shockwave client.
</summary>
</member>
<member name="F:Xabbo.ClientType.All">
<summary>
Represents all clients.
</summary>
</member>
<member name="F:Xabbo.ClientType.Modern">
<summary>
Represents modern clients. (<see cref="F:Xabbo.ClientType.Unity"/> or <see cref="F:Xabbo.ClientType.Flash"/>)
</summary>
</member>
<member name="F:Xabbo.ClientType.Origins">
<summary>
Represents the Origins client. (<see cref="F:Xabbo.ClientType.Shockwave"/>)
</summary>
</member>
<member name="T:Xabbo.ConnectedEventArgs">
<summary>
Provides data for the <see cref="E:Xabbo.Connection.IConnection.Connected"/> event.
</summary>
</member>
<member name="P:Xabbo.ConnectedEventArgs.Host">
<summary>
Gets the host for the current game connection.
</summary>
</member>
<member name="P:Xabbo.ConnectedEventArgs.Port">
<summary>
Gets the port for the current game connection.
</summary>
</member>
<member name="P:Xabbo.ConnectedEventArgs.Session">
<summary>
Gets the session information for the current game connection.
</summary>
</member>
<member name="P:Xabbo.ConnectedEventArgs.MessagesFilePath">
<summary>
Gets the path to the messages file, if it is available.
</summary>
</member>
<member name="P:Xabbo.ConnectedEventArgs.Messages">
<summary>
Gets a list of client-specific message information.
</summary>
</member>
<member name="P:Xabbo.ConnectedEventArgs.PreEstablished">
<summary>
Gets whether the connection was previously established at the time of initialization.
</summary>
<remarks>
If this is true, it is likely safe to begin sending packets. Otherwise, the connection
could be in a pre-authenticated state and it may not be safe to send certain packets.
</remarks>
</member>
<member name="T:Xabbo.ConnectionExtensions">
<summary>
Provides extensions methods for <see cref="T:Xabbo.Connection.IConnection"/>.
</summary>
</member>
<member name="M:Xabbo.ConnectionExtensions.Send(Xabbo.Connection.IConnection,Xabbo.Messages.Header)">
<summary>
Sends an empty packet with the specified message header.
</summary>
</member>
<member name="M:Xabbo.ConnectionExtensions.Send(Xabbo.Connection.IConnection,Xabbo.Messages.Identifier)">
<summary>
Sends an empty packet with the specified message identifier.
</summary>
</member>
<member name="M:Xabbo.ConnectionExtensions.Send(Xabbo.Connection.IConnection,Xabbo.Messages.IMessage)">
<summary>
Sends a message to the client or server, specified by the direction of the message.
</summary>
</member>
<member name="T:Xabbo.Connection.IConnection">
<summary>
Represents a connection to the game server.
</summary>
</member>
<member name="P:Xabbo.Connection.IConnection.IsConnected">
<summary>
Gets whether a connection to the game is currently established.
</summary>
</member>
<member name="P:Xabbo.Connection.IConnection.DisconnectToken">
<summary>
Gets a cancellation token that is triggered when the connection is lost.
</summary>
</member>
<member name="P:Xabbo.Connection.IConnection.Session">
<summary>
Gets the session information for the current connection.
</summary>
</member>
<member name="E:Xabbo.Connection.IConnection.Connected">
<summary>
Occurs when a connection to the game is established.
</summary>
</member>
<member name="E:Xabbo.Connection.IConnection.Disconnected">
<summary>
Occurs when a connection to the game ends.
</summary>
</member>
<member name="M:Xabbo.Connection.IConnection.Send(Xabbo.Messages.IPacket)">
<summary>
Sends a packet to the client or server, specified by the direction of the packet's header.
</summary>
</member>
<member name="T:Xabbo.Direction">
<summary>
Represents the direction of a message.
</summary>
</member>
<member name="M:Xabbo.EnumExtensions.ToShortString(Xabbo.Direction)">
<summary>
Returns a short string representation of the specified direction.
</summary>
<returns><c>in</c>, <c>out</c> or <c>both</c>.</returns>
</member>
<member name="M:Xabbo.EnumExtensions.ToShortString(Xabbo.ClientType)">
<summary>
Returns a short string representation of the specified client.
</summary>
<returns><c>u</c>, <c>f</c>, <c>s</c> or a combination representing which client flags are set.</returns>
</member>
<member name="T:Xabbo.ExtensionAttribute">
<summary>
Defines information about an extension.
</summary>
</member>
<member name="P:Xabbo.ExtensionAttribute.Name">
<summary>
Defines the title of the extension.
</summary>
</member>
<member name="P:Xabbo.ExtensionAttribute.Description">
<summary>
Defines the description of the extension.
</summary>
</member>
<member name="P:Xabbo.ExtensionAttribute.Author">
<summary>
Defines the author of the extension.
</summary>
</member>
<member name="P:Xabbo.ExtensionAttribute.Version">
<summary>
Defines the version of the extension.
</summary>
</member>
<member name="T:Xabbo.Extension.ExtensionInfo">
<summary>
Defines information about an extension.
</summary>
<param name="Name">The name of the extension.</param>
<param name="Description">The description of the extension.</param>
<param name="Author">The author of the extension.</param>
<param name="Version">The version of the extension.</param>
</member>
<member name="M:Xabbo.Extension.ExtensionInfo.#ctor(System.String,System.String,System.String,System.String)">
<summary>
Defines information about an extension.
</summary>
<param name="Name">The name of the extension.</param>
<param name="Description">The description of the extension.</param>
<param name="Author">The author of the extension.</param>
<param name="Version">The version of the extension.</param>
</member>
<member name="P:Xabbo.Extension.ExtensionInfo.Name">
<summary>The name of the extension.</summary>
</member>
<member name="P:Xabbo.Extension.ExtensionInfo.Description">
<summary>The description of the extension.</summary>
</member>
<member name="P:Xabbo.Extension.ExtensionInfo.Author">
<summary>The author of the extension.</summary>
</member>
<member name="P:Xabbo.Extension.ExtensionInfo.Version">
<summary>The version of the extension.</summary>
</member>
<member name="T:Xabbo.Extension.IExtension">
<summary>
Represents an extension interface provided by a packet interceptor service.
</summary>
</member>
<member name="E:Xabbo.Extension.IExtension.Activated">
<summary>
Occurs when the extension is activated by the user.
</summary>
</member>
<member name="E:Xabbo.Extension.IExtension.Intercepted">
<summary>
Occurs when a packet has been intercepted.
</summary>
</member>
<member name="T:Xabbo.Extension.IExtensionInfoInit">
<summary>
Allows an extension to initialize its information.
The source generator will implement this interface on partial classes marked with <see cref="T:Xabbo.ExtensionAttribute"/>.
</summary>
</member>
<member name="P:Xabbo.Extension.IExtensionInfoInit.Info">
<summary>
The extension information.
</summary>
</member>
<member name="T:Xabbo.Extension.IRemoteExtension">
<summary>
Represents an extension interface provided by a remote packet interceptor service.
</summary>
</member>
<member name="P:Xabbo.Extension.IRemoteExtension.Port">
<summary>
Gets the port that is currently being used to connect to the remote interceptor.
</summary>
</member>
<member name="M:Xabbo.Extension.IRemoteExtension.RunAsync(System.Threading.CancellationToken)">
<summary>
Connects to the remote interceptor and runs the packet processing loop.
</summary>
</member>
<member name="T:Xabbo.FloatString">
<summary>
Represents a float that is parsed and composed as a string.
</summary>
</member>
<member name="M:Xabbo.FloatString.#ctor(System.Single)">
<summary>
Represents a float that is parsed and composed as a string.
</summary>
</member>
<member name="T:Xabbo.Hotel">
<summary>
Represents a hotel region.
</summary>
</member>
<member name="F:Xabbo.Hotel.None">
<summary>
Represents no particular hotel.
</summary>
</member>
<member name="P:Xabbo.Hotel.All">
<summary>
Contains the definitions of all hotels, mapped by their identifier.
</summary>
</member>
<member name="P:Xabbo.Hotel.Name">
<summary>
Gets the name of this hotel, e.g. "US", "Netherlands".
</summary>
</member>
<member name="P:Xabbo.Hotel.Identifier">
<summary>
Gets the identifier of this hotel, e.g. "us", "nl".
</summary>
</member>
<member name="P:Xabbo.Hotel.Subdomain">
<summary>
Gets the subdomain of this hotel, e.g. "www", "sandbox".
</summary>
</member>
<member name="P:Xabbo.Hotel.Domain">
<summary>
Gets the top-level domain of this hotel, e.g. "com", "com.br".
</summary>
</member>
<member name="P:Xabbo.Hotel.HostName">
<summary>
Gets the hostname for this hotel, e.g. "habbo".
</summary>
</member>
<member name="P:Xabbo.Hotel.WebHost">
<summary>
Gets the web host for this hotel, e.g. "www.habbo.com".
</summary>
</member>
<member name="P:Xabbo.Hotel.GameHost">
<summary>
Gets the game host for this hotel.
</summary>
</member>
<member name="P:Xabbo.Hotel.IsOrigins">
<summary>
Gets whether this is an origins hotel.
</summary>
</member>
<member name="M:Xabbo.Hotel.#ctor">
<summary>
Creates a new hotel instance.
</summary>
</member>
<member name="M:Xabbo.Hotel.#ctor(System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean)">
<summary>
Creates a new hotel instance.
</summary>
<param name="name">The name of the hotel.</param>
<param name="identifier">The short identifier of the hotel, e.g. "us".</param>
<param name="subdomain">The subdomain, e.g. "www", "sandbox".</param>
<param name="domain">The top-level domain, e.g. "com", "com.br".</param>
<param name="host">The hostname, e.g. "habbo".</param>
<param name="gameHost">The game host, defaults to "game-{identifier}.habbo.com".</param>
<param name="isOrigins">Whether this is an Origins hotel.</param>
</member>
<member name="M:Xabbo.Hotel.ToString">
<summary>
Returns the name of the hotel.
</summary>
</member>
<member name="M:Xabbo.Hotel.FromIdentifier(System.String)">
<summary>
Gets the hotel with the specified identifier, e.g. "us".
</summary>
<returns>
The matching Hotel, or <see cref="F:Xabbo.Hotel.None"/> if it was not found.
</returns>
</member>
<member name="M:Xabbo.Hotel.FromGameHost(System.String)">
<summary>
Gets the hotel with the specified game host, e.g. "game-us.habbo.com".
</summary>
<returns>
The matching Hotel, or <see cref="F:Xabbo.Hotel.None"/> if it was not found.
</returns>
</member>
<member name="T:Xabbo.Id">
<summary>
Represents a numeric identifier.
</summary>
<remarks>
This type is represented as the following:
<list type="bullet">
<item>On Unity as a <see cref="T:System.Int64"/>.</item>
<item>On Flash as an <see cref="T:System.Int32"/>.</item>
<item>On Shockwave as a <see cref="T:Xabbo.Messages.VL64"/>.</item>
</list>
</remarks>
</member>
<member name="F:Xabbo.Id.MinValue">
<summary>
The minimum value of and <see cref="T:Xabbo.Id"/>.
</summary>
</member>
<member name="F:Xabbo.Id.MaxValue">
<summary>
The maximum value of an <see cref="T:Xabbo.Id"/>.
</summary>
</member>
<member name="M:Xabbo.Id.TryParse(System.String,Xabbo.Id@)">
<summary>
Parses a string representation of an Id to its value and
returns whether the conversion was successful.
</summary>
<param name="s">The string to parse.</param>
<param name="id">The parsed <see cref="T:Xabbo.Id"/>.</param>
</member>
<member name="M:Xabbo.Id.ToString">
<summary>
Returns the value of this <see cref="T:Xabbo.Id"/> as a string.
</summary>
</member>
<member name="M:Xabbo.Id.CompareTo(Xabbo.Id)">
<inheritdoc/>
</member>
<member name="M:Xabbo.Id.CompareTo(System.Object)">
<inheritdoc/>
</member>
<member name="T:Xabbo.InitializedEventArgs">
<summary>
Provides data for the <see cref="E:Xabbo.Interceptor.IInterceptor.Initialized"/> event.
</summary>
<param name="IsGameConnected">
Gets whether the game is already connected at the time of extension initialization.
</param>
</member>
<member name="M:Xabbo.InitializedEventArgs.#ctor(System.Nullable{System.Boolean})">
<summary>
Provides data for the <see cref="E:Xabbo.Interceptor.IInterceptor.Initialized"/> event.
</summary>
<param name="IsGameConnected">
Gets whether the game is already connected at the time of extension initialization.
</param>
</member>
<member name="P:Xabbo.InitializedEventArgs.IsGameConnected">
<summary>
Gets whether the game is already connected at the time of extension initialization.
</summary>
</member>
<member name="T:Xabbo.Intercept">
<summary>
Contains the event arguments of an intercepted packet.
</summary>
</member>
<member name="M:Xabbo.Intercept.#ctor(Xabbo.Interceptor.IInterceptor,Xabbo.Messages.IPacket@,System.Boolean@)">
<summary>
Contains the event arguments of an intercepted packet.
</summary>
</member>
<member name="P:Xabbo.Intercept.Interceptor">
<summary>
Gets the interceptor that intercepted this packet.
</summary>
</member>
<member name="P:Xabbo.Intercept.Timestamp">
<summary>
Gets the time that the packet was intercepted.
</summary>
</member>
<member name="P:Xabbo.Intercept.Direction">
<summary>
Gets the direction of the packet.
</summary>
</member>
<member name="P:Xabbo.Intercept.Sequence">
<summary>
Gets the sequence number of the intercepted packet.
</summary>
</member>
<member name="P:Xabbo.Intercept.Packet">
<summary>
Gets or replaces the intercepted packet.
</summary>
</member>
<member name="P:Xabbo.Intercept.IsBlocked">
<summary>
Gets whether the packet will be blocked by the interceptor.
</summary>
</member>
<member name="M:Xabbo.Intercept.Is(System.ReadOnlySpan{Xabbo.Messages.Identifier})">
<summary>
Gets whether the intercepted packet's unmodified header matches any of the specified identifiers.
</summary>
</member>
<member name="M:Xabbo.Intercept.Block">
<summary>
Flags the packet to be blocked from its destination by the interceptor.
</summary>
</member>
<member name="T:Xabbo.InterceptAttribute">
<summary>
Indicates that a class or method intercepts messages for the specified clients.
If no clients are specified, then all clients are targeted.
</summary>
<remarks>
When placed on a method, and an <see cref="T:Xabbo.InterceptInAttribute"/> or
<see cref="T:Xabbo.InterceptOutAttribute"/> is also present, this attribute specifies
which clients the intercept handler should target. If no directional intercept
attributes are specified, then the method is considered to be a message handler,
the attribute must not specify any client types, and the method must have
one of the following function signatures:
<list type="bullet">
<item>void (<see cref="T:Xabbo.Intercept`1"/>)</item>
<item>void (<see cref="T:Xabbo.Intercept"/>, <see cref="T:Xabbo.Messages.IMessage`1"/>)</item>
<item>void (<see cref="T:Xabbo.Messages.IMessage`1"/>)</item>
<item><see cref="T:Xabbo.Messages.IMessage"/>? (<see cref="T:Xabbo.Messages.IMessage`1"/>)</item>
</list>
</remarks>
</member>
<member name="M:Xabbo.InterceptAttribute.#ctor(Xabbo.ClientType)">
<summary>
Indicates that a class or method intercepts messages for the specified clients.
If no clients are specified, then all clients are targeted.
</summary>
<remarks>
When placed on a method, and an <see cref="T:Xabbo.InterceptInAttribute"/> or
<see cref="T:Xabbo.InterceptOutAttribute"/> is also present, this attribute specifies
which clients the intercept handler should target. If no directional intercept
attributes are specified, then the method is considered to be a message handler,
the attribute must not specify any client types, and the method must have
one of the following function signatures:
<list type="bullet">
<item>void (<see cref="T:Xabbo.Intercept`1"/>)</item>
<item>void (<see cref="T:Xabbo.Intercept"/>, <see cref="T:Xabbo.Messages.IMessage`1"/>)</item>
<item>void (<see cref="T:Xabbo.Messages.IMessage`1"/>)</item>
<item><see cref="T:Xabbo.Messages.IMessage"/>? (<see cref="T:Xabbo.Messages.IMessage`1"/>)</item>
</list>
</remarks>
</member>
<member name="P:Xabbo.InterceptAttribute.Clients">
<summary>
The target clients on which to intercept packets.
</summary>
</member>
<member name="M:Xabbo.InterceptAttribute.#ctor">
<summary>
Constructs a new intercept attribute targeting all clients.
</summary>
</member>
<member name="T:Xabbo.InterceptInAttribute">
<summary>
When placed on a method, indicates that the method intercepts the specified incoming messages.
</summary>
<param name="identifiers">The names of the identifiers to intercept.</param>
</member>
<member name="M:Xabbo.InterceptInAttribute.#ctor(System.String[])">
<summary>
When placed on a method, indicates that the method intercepts the specified incoming messages.
</summary>
<param name="identifiers">The names of the identifiers to intercept.</param>
</member>
<member name="P:Xabbo.InterceptInAttribute.Identifiers">
<summary>
The names of the identifiers to intercept.
</summary>
</member>
<member name="T:Xabbo.InterceptOutAttribute">
<summary>
When placed on a method, indicates that the method intercepts the specified outgoing messages.
</summary>
<param name="identifiers">The names of the identifiers to intercept.</param>
</member>
<member name="M:Xabbo.InterceptOutAttribute.#ctor(System.String[])">
<summary>
When placed on a method, indicates that the method intercepts the specified outgoing messages.
</summary>
<param name="identifiers">The names of the identifiers to intercept.</param>
</member>
<member name="P:Xabbo.InterceptOutAttribute.Identifiers">
<summary>
The names of the identifiers to intercept.
</summary>
</member>
<member name="T:Xabbo.InterceptorExtensions">
<summary>
Provides extensions for <see cref="T:Xabbo.Interceptor.IInterceptor"/>.
</summary>
</member>
<member name="M:Xabbo.InterceptorExtensions.Intercept(Xabbo.Interceptor.IInterceptor,System.ReadOnlySpan{Xabbo.Messages.Header},Xabbo.Messages.InterceptCallback,Xabbo.ClientType)">
<summary>
Registers an intercept for the specified headers with the provided <see cref="T:Xabbo.Messages.InterceptCallback"/>.
</summary>
<param name="interceptor">The interceptor to register the intercept for.</param>
<param name="headers">The message headers to intercept.</param>
<param name="callback">The function to call when a packet is intercepted.</param>
<param name="clients">Specifies which clients to intercept on.</param>
</member>
<member name="M:Xabbo.InterceptorExtensions.Intercept(Xabbo.Interceptor.IInterceptor,System.ReadOnlySpan{Xabbo.Messages.Identifier},Xabbo.Messages.InterceptCallback,Xabbo.ClientType,System.Boolean)">
<summary>
Registers an intercept for the specified identifiers with the provided <see cref="T:Xabbo.Messages.InterceptCallback"/>.
</summary>
<param name="interceptor">The interceptor to register the intercept for.</param>
<param name="identifiers">The message identifiers to intercept.</param>
<param name="callback">The function to call when a packet is intercepted.</param>
<param name="clients">Specifies which clients to intercept on.</param>
<param name="targeted">
Whether to use client-targeted identifiers.
For example, if the client type of the message identifier is Flash,
then it will only intercept that identifier on the Flash client.
</param>
<returns></returns>
</member>
<member name="M:Xabbo.InterceptorExtensions.Intercept``1(Xabbo.Interceptor.IInterceptor,Xabbo.Messages.MessageCallback{``0})">
<summary>
Registers an intercept for the specified message with the provided <see cref="T:Xabbo.Messages.MessageCallback`1"/>.
</summary>
</member>
<member name="M:Xabbo.InterceptorExtensions.Intercept``1(Xabbo.Interceptor.IInterceptor,Xabbo.Messages.ModifyMessageCallback{``0})">
<summary>
Registers an intercept for the specified message with the provided <see cref="T:Xabbo.Messages.ModifyMessageCallback`1"/>.
</summary>
</member>
<member name="M:Xabbo.InterceptorExtensions.Intercept``1(Xabbo.Interceptor.IInterceptor,Xabbo.Messages.InterceptMessageCallback{``0})">
<summary>
Registers an intercept for the specified message with the provided <see cref="T:Xabbo.Messages.InterceptMessageCallback`1"/>.
</summary>
</member>
<member name="M:Xabbo.InterceptorExtensions.ReceiveAsync(Xabbo.Interceptor.IInterceptor,System.ReadOnlySpan{Xabbo.Messages.Header},System.Nullable{System.Int32},System.Boolean,System.Func{Xabbo.Messages.IPacket,System.Boolean},System.Threading.CancellationToken)">
<summary>
Asynchronously captures the first intercepted packet matching any of the specified headers.
</summary>
<param name="interceptor">The interceptor.</param>
<param name="headers">Specifies which headers to listen for.</param>
<param name="timeout">The maximum time in milliseconds to wait for a packet to be captured. <c>-1</c> specifies no timeout.</param>
<param name="block">Whether the captured packet should be blocked from its destination.</param>
<param name="shouldCapture">A callback that inspects intercepted packets and return whether the packet should be captured or not.</param>
<param name="cancellationToken">The token used to cancel this operation.</param>
<returns>A task that completes once a packet has been captured, or the operation times out.</returns>
</member>
<member name="M:Xabbo.InterceptorExtensions.ReceiveAsync(Xabbo.Interceptor.IInterceptor,System.ReadOnlySpan{Xabbo.Messages.Identifier},System.Nullable{System.Int32},System.Boolean,System.Func{Xabbo.Messages.IPacket,System.Boolean},System.Threading.CancellationToken)">
<summary>
Asynchronously captures the first intercepted packet matching any of the specified headers.
</summary>
<param name="interceptor">The interceptor.</param>
<param name="identifiers">Specifies which messages to listen for.</param>
<param name="timeout">The maximum time in milliseconds to wait for a packet to be captured. <c>-1</c> specifies no timeout.</param>
<param name="block">Whether the captured packet should be blocked from its destination.</param>
<param name="shouldCapture">A callback that inspects intercepted packets and return whether the packet should be captured or not.</param>
<param name="cancellationToken">The token used to cancel this operation.</param>
<returns>A task that completes once a packet has been captured, or the operation times out.</returns>
</member>
<member name="M:Xabbo.InterceptorExtensions.ReceiveAsync``1(Xabbo.Interceptor.IInterceptor,System.Nullable{System.Int32},System.Boolean,System.Func{``0,System.Boolean},System.Threading.CancellationToken)">
<summary>
Asynchronously captures the first intercepted matching message.
</summary>
<typeparam name="TMsg">The type of message to capture.</typeparam>
<param name="interceptor">The interceptor.</param>
<param name="timeout">The maximum time in milliseconds to wait for a message to be captured. <c>-1</c> specifies no timeout.</param>
<param name="block">Whether the captured message should be blocked from its destination.</param>
<param name="shouldCapture">A callback that inspects an intercepted message and return whether the message should be captured or not.</param>
<param name="cancellationToken">The token used to cancel this operation.</param>
<returns>A task that completes once a message has been captured, or the operation times out.</returns>
</member>
<member name="M:Xabbo.InterceptorExtensions.RequestAsync``3(Xabbo.Interceptor.IInterceptor,Xabbo.Messages.IRequestMessage{``0,``1,``2},System.Nullable{System.Int32},System.Boolean,System.Threading.CancellationToken)">
<summary>
Sends a request message and asynchronously captures its response.
</summary>
<typeparam name="TReq">The type of the request message.</typeparam>
<typeparam name="TRes">The type of the response message.</typeparam>
<typeparam name="TData">The type of the response data.</typeparam>
<param name="interceptor">The interceptor.</param>
<param name="request">The request message to send.</param>
<param name="timeout">The maximum time in milliseconds to wait for a message to be captured. <c>-1</c> specifies no timeout.</param>
<param name="block">Whether the captured message should be blocked from its destination.</param>
<param name="cancellationToken">The token used to cancel this operation.</param>
</member>
<member name="T:Xabbo.Interceptor.IInterceptor">
<summary>
Represents a packet interceptor that can read, modify and send packets.
</summary>
</member>
<member name="P:Xabbo.Interceptor.IInterceptor.Dispatcher">
<summary>
Gets the message dispatcher associated with this interceptor.
</summary>
</member>
<member name="E:Xabbo.Interceptor.IInterceptor.Initialized">
<summary>
Occurs when the interceptor has been initialized.
</summary>
</member>
<member name="T:Xabbo.Interceptor.IInterceptorContext">
<summary>
Represents a context that allows the source generator
to inject interceptor related methods into.
<para/>
The generator will inject the following methods into partial classes
that implement this interface and are marked with
<see cref="T:Xabbo.ExtensionAttribute"/> or <see cref="T:Xabbo.InterceptAttribute"/>:
<list type="bullet">
<item><c>void Send&lt;T, ...&gt;(Identifier, T, ...)</c> <i>(variadic)</i></item>
<item><c>void Send&lt;T, ...&gt;(Header, T, ...)</c> <i>(variadic)</i></item>
<item><c>void Send&lt;T&gt;(T msg) where T : IMessage&lt;T&gt;</c></item>
<item><c>Task&lt;IPacket&gt; ReceiveAsync(Identifier, ...)</c></item>
<item><c>Task&lt;IPacket&gt; ReceiveAsync(Header, ...)</c></item>
<item><c>Task&lt;T&gt; ReceiveAsync&lt;T&gt;(...) where T : IMessage&lt;T&gt;</c></item>
<item><c>Task&lt;TData&gt; RequestAsync&lt;TReq, TRes, TData&gt;(...) where T : IRequestMessage&lt;TReq, TRes, TData&gt;</c></item>
</list>
</summary>
</member>
<member name="T:Xabbo.Interceptor.Tasks.CaptureMessageTask">
<summary>
A task that captures the first intercepted message with a specified header.
</summary>
<param name="interceptor">The interceptor to bind to.</param>
<param name="headers">The headers to listen for.</param>
<param name="block">Whether to block the captured packet.</param>
<param name="shouldCapture">A callback that may inspect an intercepted packet and return whether or not it should be captured.</param>
</member>
<member name="M:Xabbo.Interceptor.Tasks.CaptureMessageTask.#ctor(Xabbo.Interceptor.IInterceptor,System.ReadOnlySpan{Xabbo.Messages.Header},System.Boolean,System.Func{Xabbo.Messages.IPacket,System.Boolean})">
<summary>
A task that captures the first intercepted message with a specified header.
</summary>
<param name="interceptor">The interceptor to bind to.</param>
<param name="headers">The headers to listen for.</param>
<param name="block">Whether to block the captured packet.</param>
<param name="shouldCapture">A callback that may inspect an intercepted packet and return whether or not it should be captured.</param>
</member>
<member name="T:Xabbo.Interceptor.Tasks.InterceptorTask`1">
<summary>
A base class used to implement an asynchronous task that intercepts packets and returns a result.
</summary>
<typeparam name="TResult">The result type of the task.</typeparam>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.#ctor(Xabbo.Interceptor.IInterceptor)">
<summary>
A base class used to implement an asynchronous task that intercepts packets and returns a result.
</summary>
<typeparam name="TResult">The result type of the task.</typeparam>
</member>
<member name="P:Xabbo.Interceptor.Tasks.InterceptorTask`1.SupportedClients">
<summary>
Gets the clients supported by this interceptor task.
</summary>
</member>
<member name="P:Xabbo.Interceptor.Tasks.InterceptorTask`1.Interceptor">
<summary>
The interceptor that this task is attached to.
</summary>
</member>
<member name="P:Xabbo.Interceptor.Tasks.InterceptorTask`1.Session">
<summary>
Gets the current session information.
</summary>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.Execute(System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Executes the task synchronously and returns the result.
</summary>
<param name="timeoutMs">The maximum number of milliseconds to wait for a result. Use <c>-1</c> for no timeout.</param>
<param name="cancellationToken">The cancellation token that can be used to cancel the task.</param>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.Execute(System.TimeSpan,System.Threading.CancellationToken)">
<summary>
Executes the task synchronously and returns the result.
</summary>
<param name="timeout">The maximum time to wait for a result. Use <see cref="F:System.TimeSpan.Zero"/> for no timeout.</param>
<param name="cancellationToken">The cancellation token that can be used to cancel the task.</param>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.ExecuteAsync(System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Executes the task asynchronously and returns the result.
</summary>
<param name="timeoutMs">The maximum time to wait for a result in milliseconds. Use <c>-1</c> for no timeout.</param>
<param name="cancellationToken">The cancellation token that can be used to cancel the task.</param>
<exception cref="T:System.TimeoutException">If the task fails to complete within the specified timeout.</exception>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.ExecuteAsync(System.TimeSpan,System.Threading.CancellationToken)">
<summary>
Executes the task asynchronously and returns the result.
</summary>
<param name="timeout">The maximum time to wait for a result. Use <see cref="F:System.TimeSpan.Zero"/> for no timeout.</param>
<param name="cancellationToken">The cancellation token that can be used to cancel the task.</param>
<exception cref="T:System.TimeoutException">If the task fails to complete within the specified timeout.</exception>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.OnAttach">
<summary>
Attaches this task to the interceptor's dispatcher.
The default implementation calls <see cref="M:Xabbo.Messages.IMessageHandler.Attach(Xabbo.Interceptor.IInterceptor)"/> if this task implements <see cref="T:Xabbo.Messages.IMessageHandler"/> .
</summary>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.OnRelease">
<summary>
Detaches this task from the interceptor's dispatcher.
The default implementation calls <see cref="M:System.IDisposable.Dispose"/> on the <see cref="T:System.IDisposable"/> returned by <see cref="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.OnAttach"/> .
</summary>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.OnDisconnected">
<summary>
Invoked when the connection ends while the interceptor task is in progress.
</summary>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.OnExecuteAsync">
<summary>
Invoked when the task is executed.
The default implementation synchronously calls <see cref="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.OnExecute"/>.
</summary>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.OnExecute">
<summary>
Invoked when the task is executed.
</summary>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.SetResult(`0)">
<summary>
Attempts to set the result of this task to the specified value.
</summary>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.SetCanceled">
<summary>
Attempts to set the status of this task to canceled.
</summary>
</member>
<member name="M:Xabbo.Interceptor.Tasks.InterceptorTask`1.SetException(System.Exception)">
<summary>
Attempts to set the result of this task to the specified exception.
</summary>
</member>
<member name="T:Xabbo.Intercept`1">
<summary>
Contains the event arguments of an intercepted message.
</summary>
<typeparam name="TMsg">The type of the message.</typeparam>
<param name="inner">The inner intercept instance to wrap.</param>
</member>
<member name="M:Xabbo.Intercept`1.#ctor(Xabbo.Intercept@)">
<summary>
Contains the event arguments of an intercepted message.
</summary>
<typeparam name="TMsg">The type of the message.</typeparam>
<param name="inner">The inner intercept instance to wrap.</param>
</member>
<member name="M:Xabbo.Intercept`1.Wrap(Xabbo.Messages.InterceptCallback{`0})">
<summary>
Wraps the targeted message intercept callback.
</summary>
</member>
<member name="P:Xabbo.Intercept`1.Msg">
<summary>
Gets the parsed message for this intercept.
</summary>
</member>
<member name="P:Xabbo.Intercept`1.Interceptor">
<summary>
Gets the interceptor that intercepted this message.
</summary>
</member>
<member name="P:Xabbo.Intercept`1.Timestamp">
<summary>
Gets the time that the message was intercepted.
</summary>
</member>
<member name="P:Xabbo.Intercept`1.Direction">
<summary>
Gets the direction of the message.
</summary>
</member>
<member name="P:Xabbo.Intercept`1.Sequence">
<summary>
Gets the sequence number of the intercepted message.
</summary>
</member>
<member name="P:Xabbo.Intercept`1.IsBlocked">
<summary>
Gets whether the packet will be blocked by the interceptor.
</summary>
</member>
<member name="M:Xabbo.Intercept`1.Is(System.ReadOnlySpan{Xabbo.Messages.Identifier})">
<summary>
Gets whether the intercepted packet's unmodified header matches any of the specified identifiers.
</summary>
</member>
<member name="M:Xabbo.Intercept`1.Block">
<summary>
Flags the packet to be blocked from its destination by the interceptor.
</summary>
</member>
<member name="T:Xabbo.Length">
<summary>
Represents an array length.
</summary>
<remarks>
This type is represented as the following:
<list type="bullet">
<item>On Unity as a <see cref="T:System.Int16"/>.</item>
<item>On Flash as an <see cref="T:System.Int32"/>.</item>
<item>On Shockwave as a <see cref="T:Xabbo.Messages.VL64"/>.</item>
</list>
</remarks>
</member>
<member name="M:Xabbo.Length.ToString">
<summary>
Returns the value of this <see cref="T:Xabbo.Length"/> as a string.
</summary>
</member>
<member name="M:Xabbo.Length.CompareTo(Xabbo.Length)">
<inheritdoc/>
</member>
<member name="M:Xabbo.Length.CompareTo(System.Object)">
<inheritdoc/>
</member>
<member name="T:Xabbo.Messages.AmbiguousIdentifierException">
<summary>
Thrown when an identifier resolves to multiple message name sets.
</summary>
<param name="identifier">The ambiguous identifier.</param>
<param name="names">The set of message names resolved by the identifier.</param>
<remarks>
This can happen when a non-targeted identifier (with <see cref="F:Xabbo.ClientType.None"/> as its client type)
resolves to multiple sets of identifiers such as
(<see cref="F:Xabbo.ClientType.Shockwave"/>/"Objects") and (<see cref="F:Xabbo.ClientType.Flash"/>/"Objects")
which are considered to be different messages.
</remarks>
</member>
<member name="M:Xabbo.Messages.AmbiguousIdentifierException.#ctor(Xabbo.Messages.Identifier,System.Collections.Generic.IEnumerable{Xabbo.Messages.MessageNames})">
<summary>
Thrown when an identifier resolves to multiple message name sets.
</summary>
<param name="identifier">The ambiguous identifier.</param>
<param name="names">The set of message names resolved by the identifier.</param>
<remarks>
This can happen when a non-targeted identifier (with <see cref="F:Xabbo.ClientType.None"/> as its client type)
resolves to multiple sets of identifiers such as
(<see cref="F:Xabbo.ClientType.Shockwave"/>/"Objects") and (<see cref="F:Xabbo.ClientType.Flash"/>/"Objects")
which are considered to be different messages.
</remarks>
</member>
<member name="T:Xabbo.Messages.B64">
<summary>
Represents an unsigned fixed-length radix-64 encoded integer.
</summary>
</member>
<member name="F:Xabbo.Messages.B64.MinValue">
<summary>
The minimum value of a <see cref="T:Xabbo.Messages.B64"/>.
</summary>
</member>
<member name="F:Xabbo.Messages.B64.MaxValue">
<summary>
The maximum value of a <see cref="T:Xabbo.Messages.B64"/>.
</summary>
</member>
<member name="M:Xabbo.Messages.B64.Encode(System.Span{System.Byte},Xabbo.Messages.B64)">
<summary>
Encodes a B64 value to the specified span.
</summary>
<param name="buf">The span to encode into.</param>
<param name="value">The value to encode.</param>
<exception cref="T:System.ArgumentOutOfRangeException">
If the value is outside the range of a B64,
or the length of the provided span is less than 2.
</exception>
</member>
<member name="M:Xabbo.Messages.B64.Decode(System.ReadOnlySpan{System.Byte})">
<summary>
Decodes a B64 value from the specified read-only byte span.
</summary>
<param name="buf">The span to decode from.</param>
<returns>The decoded B64 value.</returns>
<exception cref="T:System.ArgumentOutOfRangeException">If the length of the provided span is less than 2.</exception>
<exception cref="T:System.ArgumentException">
If any of the input bytes' 2 most significant bits are not set to <c>01</c>.
</exception>
</member>
<member name="M:Xabbo.Messages.B64.ToString">
<summary>
Returns the value of this <see cref="T:Xabbo.Messages.B64"/> as a string.
</summary>
</member>
<member name="T:Xabbo.Messages.ClientMessage">
<summary>
Defines information about a client message.
</summary>
</member>
<member name="M:Xabbo.Messages.ClientMessage.#ctor(Xabbo.ClientType,Xabbo.Direction,System.Int16,System.String)">
<summary>
Defines information about a client message.
</summary>
</member>
<member name="T:Xabbo.Messages.Header">
<summary>
Specifies a direction and header value.
</summary>
</member>
<member name="M:Xabbo.Messages.Header.#ctor(Xabbo.Direction,System.Int16)">
<summary>
Specifies a direction and header value.
</summary>
</member>
<member name="F:Xabbo.Messages.Header.Unknown">
<summary>
Represents an unknown header.
</summary>
</member>
<member name="F:Xabbo.Messages.Header.All">
<summary>
Represents a header that matches all messages.
</summary>
<remarks>
This can be used to intercept all packets with <see cref="M:Xabbo.InterceptorExtensions.Intercept(Xabbo.Interceptor.IInterceptor,System.ReadOnlySpan{Xabbo.Messages.Header},Xabbo.Messages.InterceptCallback,Xabbo.ClientType)"/>.
</remarks>
</member>
<member name="T:Xabbo.Messages.Headers">
<summary>
Represents a set of <see cref="T:Xabbo.Messages.Header"/>.
</summary>
</member>
<member name="P:Xabbo.Messages.Headers.Unknown">
<summary>
Gets the unknown identifiers in this set.
</summary>
</member>
<member name="P:Xabbo.Messages.Headers.Incoming">
<summary>
Gets the incoming identifiers in this set.
</summary>
</member>
<member name="P:Xabbo.Messages.Headers.Outgoing">
<summary>
Gets the outgoing identifiers in this set.
</summary>
</member>
<member name="M:Xabbo.Messages.Headers.#ctor">
<summary>
Creates a new empty header set.
</summary>
</member>
<member name="M:Xabbo.Messages.Headers.#ctor(System.Collections.Generic.IEnumerable{Xabbo.Messages.Header})">
<summary>
Creates a header set with the specified headers.
</summary>
</member>
<member name="M:Xabbo.Messages.Headers.ToString">
<summary>
Gets a string representation of this header set.
</summary>
</member>
<member name="T:Xabbo.Messages.IComposer">
<summary>
Represents an object that can be composed to a packet.
</summary>
</member>
<member name="M:Xabbo.Messages.IComposer.Compose(Xabbo.Messages.PacketWriter@)">
<summary>
Composes the object to a packet using the specified <see cref="T:Xabbo.Messages.PacketWriter"/>.
</summary>
</member>
<member name="T:Xabbo.Messages.Identifier">
<summary>
Represents a client type, direction, and message name.
</summary>
<remarks>
Used to associate a message name with a <see cref="T:Xabbo.Messages.Header"/> that is resolved at runtime.
</remarks>
</member>
<member name="M:Xabbo.Messages.Identifier.#ctor(Xabbo.ClientType,Xabbo.Direction,System.String)">
<summary>
Represents a client type, direction, and message name.
</summary>
<remarks>
Used to associate a message name with a <see cref="T:Xabbo.Messages.Header"/> that is resolved at runtime.
</remarks>
</member>
<member name="T:Xabbo.Messages.Identifiers">
<summary>
Represents a set of <see cref="T:Xabbo.Messages.Identifier"/>.
</summary>
</member>
<member name="P:Xabbo.Messages.Identifiers.Unknown">
<summary>
Gets the unknown identifiers in this set.
</summary>
</member>
<member name="P:Xabbo.Messages.Identifiers.Incoming">
<summary>
Gets the incoming identifiers in this set.
</summary>
</member>
<member name="P:Xabbo.Messages.Identifiers.Outgoing">
<summary>
Gets the outgoing identifiers in this set.
</summary>
</member>
<member name="M:Xabbo.Messages.Identifiers.#ctor">
<summary>
Creates a new empty identifier set.
</summary>
</member>
<member name="M:Xabbo.Messages.Identifiers.#ctor(System.Collections.Generic.IEnumerable{Xabbo.Messages.Identifier})">
<summary>
Creates an identifier set with the specified identifiers.
</summary>
</member>
<member name="M:Xabbo.Messages.Identifiers.Add(Xabbo.ClientType,Xabbo.Direction,System.String)">
<summary>
Adds a new identifier with the specified direction and name to this set.
</summary>
</member>
<member name="M:Xabbo.Messages.Identifiers.Add(Xabbo.ClientType,Xabbo.Direction,System.String[])">
<summary>
Adds a range of new identifiers with the specified direction and names to this set.
</summary>
</member>
<member name="M:Xabbo.Messages.Identifiers.ToString">
<summary>
Gets a string representation of this identifier set.
</summary>
</member>
<member name="T:Xabbo.Messages.IMessage">
<summary>
Represents a message with an associated identifier that can be composed to a packet.
</summary>
</member>
<member name="F:Xabbo.Messages.IMessage.Block">
<summary>
A message instance that blocks the packet if it is returned from a <see cref="T:Xabbo.Messages.ModifyMessageCallback`1"/>.
</summary>
</member>
<member name="M:Xabbo.Messages.IMessage.GetIdentifier(Xabbo.ClientType)">
<summary>
Gets the identifier for this message instance.
</summary>
</member>
<member name="M:Xabbo.Messages.IMessage.GetSupportedClients">
<summary>
Gets the clients that this message supports.
</summary>
</member>
<member name="T:Xabbo.Messages.IMessageDispatcher">
<summary>
Represents a service that routes intercepted messages to registered intercept handlers.
</summary>
</member>
<member name="P:Xabbo.Messages.IMessageDispatcher.Messages">
<summary>
Gets the message manager associated with this dispatcher.
</summary>
</member>
<member name="M:Xabbo.Messages.IMessageDispatcher.Dispatch(Xabbo.Intercept)">
<summary>
Routes the specified <see cref="T:Xabbo.Intercept"/> to the relevant handlers currently attached to this dispatcher.
</summary>
</member>
<member name="M:Xabbo.Messages.IMessageDispatcher.Register(Xabbo.Messages.InterceptGroup)">
<summary>
Registers a group of intercept handlers.
</summary>
<returns>
An <see cref="T:System.IDisposable"/> that deregisters the intercept group
when <see cref="M:System.IDisposable.Dispose"/> is called.
</returns>
</member>
<member name="M:Xabbo.Messages.IMessageDispatcher.Reset">
<summary>
Releases all bound intercept handlers and intercept callbacks.
</summary>
</member>
<member name="T:Xabbo.Messages.IMessageHandler">
<summary>
Represents a message handler that can be attached to an interceptor.
</summary>
<remarks>
The source generator will implement this interface on partial classes marked with
<see cref="T:Xabbo.InterceptAttribute"/> or <see cref="T:Xabbo.ExtensionAttribute"/>.
Intercept handlers will be generated for methods marked with <see cref="T:Xabbo.InterceptAttribute"/>,
<see cref="T:Xabbo.InterceptInAttribute"/> or <see cref="T:Xabbo.InterceptOutAttribute"/>.
</remarks>
</member>
<member name="M:Xabbo.Messages.IMessageHandler.Attach(Xabbo.Interceptor.IInterceptor)">
<summary>
Attaches the handler to the specified interceptor.
</summary>
<returns>
An <see cref="T:System.IDisposable"/> that detaches the handler
when <see cref="M:System.IDisposable.Dispose"/> is called.
</returns>
</member>
<member name="T:Xabbo.Messages.IMessageManager">
<summary>
Represents a service that manages client specific message &amp; header information.
</summary>
</member>
<member name="M:Xabbo.Messages.IMessageManager.InitializeAsync(System.Threading.CancellationToken)">
<summary>
Initializes the message manager.
</summary>
</member>
<member name="P:Xabbo.Messages.IMessageManager.Available">
<summary>
Gets whether message information is available.
</summary>
</member>
<member name="M:Xabbo.Messages.IMessageManager.LoadMessages(System.Collections.Generic.IEnumerable{Xabbo.Messages.ClientMessage})">
<summary>
Loads the specified client messages.
</summary>
</member>
<member name="E:Xabbo.Messages.IMessageManager.Loaded">
<summary>
Notifies listeners when messages have been loaded.
</summary>
</member>
<member name="M:Xabbo.Messages.IMessageManager.TryGetHeader(Xabbo.Messages.Identifier,Xabbo.Messages.Header@)">
<summary>
Attempts to get a header by its identifier.
</summary>
</member>
<member name="M:Xabbo.Messages.IMessageManager.TryGetNames(Xabbo.Messages.Identifier,Xabbo.Messages.MessageNames@)">
<summary>
Attempts to get the associated message names for the specified identifier.
</summary>
</member>
<member name="M:Xabbo.Messages.IMessageManager.TryGetNames(Xabbo.Messages.Header,Xabbo.Messages.MessageNames@)">
<summary>
Attempts to get the associated message names for the specified header.
</summary>
</member>
<member name="M:Xabbo.Messages.IMessageManager.Resolve(Xabbo.Messages.Identifier)">
<summary>
Resolves the specified identifier to a header.
</summary>
<exception cref="T:Xabbo.Messages.UnresolvedIdentifiersException">If the identifier could not be resolved.</exception>
</member>
<member name="M:Xabbo.Messages.IMessageManager.Resolve(System.ReadOnlySpan{Xabbo.Messages.Identifier})">
<summary>
Resolves the specified identifiers to an array of headers.
</summary>
<exception cref="T:System.ArgumentException">If no identifiers were specified.</exception>
<exception cref="T:Xabbo.Messages.UnresolvedIdentifiersException">If any of the identifiers could not be resolved.</exception>
</member>
<member name="M:Xabbo.Messages.IMessageManager.TryResolve(System.ReadOnlySpan{Xabbo.Messages.Identifier},Xabbo.Messages.Headers@,Xabbo.Messages.Identifiers@)">
<summary>
Attempts to resolve the specified identifiers to an array of headers.
</summary>
<exception cref="T:System.ArgumentException">If no identifiers were specified.</exception>
</member>
<member name="M:Xabbo.Messages.IMessageManager.Is(Xabbo.Messages.Header,System.ReadOnlySpan{Xabbo.Messages.Identifier})">
<summary>
Gets whether the header matches any of the specified identifiers.
</summary>
</member>
<member name="T:Xabbo.Messages.IMessage`1">
<summary>
Represents a message with an associated identifier that can be parsed from and composed to a packet.
</summary>
</member>
<member name="P:Xabbo.Messages.IMessage`1.Identifiers">
<summary>
Gets the target identifiers for this message.
</summary>
<remarks>
The default implementation returns an array containing the single <see cref="P:Xabbo.Messages.IMessage`1.Identifier"/>.
</remarks>
</member>
<member name="P:Xabbo.Messages.IMessage`1.UseTargetedIdentifiers">
<summary>
Gets whether each of the identifiers should only intercept on their respective client types.
</summary>
<remarks>
The default implementation returns false.
</remarks>
</member>
<member name="P:Xabbo.Messages.IMessage`1.SupportedClients">
<summary>
Gets the client types that this message supports.
</summary>
</member>
<member name="P:Xabbo.Messages.IMessage`1.Identifier">
<summary>
Gets the identifier for this message.
</summary>
</member>
<member name="M:Xabbo.Messages.IMessage`1.Xabbo#Messages#IMessage#GetIdentifier(Xabbo.ClientType)">
<inheritdoc/>
<remarks>
The default implementation returns the static <see cref="P:Xabbo.Messages.IMessage`1.Identifier"/>.
</remarks>
</member>
<member name="M:Xabbo.Messages.IMessage`1.Match(Xabbo.Messages.PacketReader@)">
<summary>
Checks whether the specified packet matches this message.
</summary>
<remarks>
The default implementation returns true.
</remarks>
</member>
<member name="M:Xabbo.Messages.IMessage`1.CreateHandler(Xabbo.Messages.InterceptCallback{`0})">
<summary>
Creates an <see cref="T:Xabbo.Messages.InterceptHandler"/> for the specified <see cref="T:Xabbo.Messages.InterceptCallback`1"/> .
</summary>
</member>
<member name="M:Xabbo.Messages.IMessage`1.CreateHandler(Xabbo.Messages.ModifyMessageCallback{`0})">
<summary>
Creates an <see cref="T:Xabbo.Messages.InterceptHandler"/> for the specified <see cref="T:Xabbo.Messages.ModifyMessageCallback`1"/> .
</summary>
</member>
<member name="M:Xabbo.Messages.IMessage`1.CreateHandler(Xabbo.Messages.MessageCallback{`0})">
<summary>
Creates an <see cref="T:Xabbo.Messages.InterceptHandler"/> for the specified <see cref="T:Xabbo.Messages.MessageCallback`1"/> .
</summary>
</member>
<member name="M:Xabbo.Messages.IMessage`1.CreateHandler(Xabbo.Messages.InterceptMessageCallback{`0})">
<summary>
Creates an <see cref="T:Xabbo.Messages.InterceptHandler"/> for the specified <see cref="T:Xabbo.Messages.InterceptMessageCallback`1"/> .
</summary>
</member>
<member name="T:Xabbo.Messages.InterceptCallback">
<summary>
Handles an intercepted packet.
</summary>
<param name="intercept">The intercept event arguments.</param>
</member>
<member name="T:Xabbo.Messages.InterceptCallback`1">
<summary>
Handles an intercepted message.
</summary>
<typeparam name="TMsg">The type of the message.</typeparam>
<param name="intercept">The intercept event arguments.</param>
</member>
<member name="T:Xabbo.Messages.InterceptGroup">
<summary>
Defines a set of related intercept handlers.
</summary>
</member>
<member name="M:Xabbo.Messages.InterceptGroup.#ctor">
<summary>
Constructs a new empty intercept group.
</summary>
</member>
<member name="M:Xabbo.Messages.InterceptGroup.#ctor(System.ReadOnlySpan{Xabbo.Messages.InterceptHandler})">
<summary>
Constructs a new intercept group with the specified handlers.
</summary>
</member>
<member name="P:Xabbo.Messages.InterceptGroup.Persistent">
<summary>
Whether this is a persistent intercept group.
</summary>
<remarks>
Persistent intercept groups can be attached before a connection is established
when message information is not yet available. They will be persisted by a message
dispatcher and re-attached each time the game connects, until the registration
returned by <see cref="M:Xabbo.Messages.IMessageDispatcher.Register(Xabbo.Messages.InterceptGroup)"/> is disposed of.
</remarks>
</member>
<member name="M:Xabbo.Messages.InterceptGroup.Add(Xabbo.Messages.InterceptHandler)">
<summary>
Adds the specified handler to the intercept group.
</summary>
</member>
<member name="T:Xabbo.Messages.InterceptHandler">
<summary>
Associates a set of <see cref="T:Xabbo.Messages.Identifier"/> and/or <see cref="T:Xabbo.Messages.Header"/> with an <see cref="T:Xabbo.Messages.InterceptCallback"/>.
</summary>
</member>
<member name="M:Xabbo.Messages.InterceptHandler.#ctor(System.ReadOnlySpan{Xabbo.Messages.Header},System.ReadOnlySpan{Xabbo.Messages.Identifier},Xabbo.Messages.InterceptCallback)">
<summary>
Associates a set of <see cref="T:Xabbo.Messages.Identifier"/> and/or <see cref="T:Xabbo.Messages.Header"/> with an <see cref="T:Xabbo.Messages.InterceptCallback"/>.
</summary>
</member>
<member name="M:Xabbo.Messages.InterceptHandler.#ctor(System.ReadOnlySpan{Xabbo.Messages.Header},Xabbo.Messages.InterceptCallback)">
<summary>
Constructs a new intercept handler with the specified headers and callback.
</summary>
<param name="headers">The headers to intercept.</param>
<param name="callback">The intercept handler callback.</param>
</member>
<member name="M:Xabbo.Messages.InterceptHandler.#ctor(System.ReadOnlySpan{Xabbo.Messages.Identifier},Xabbo.Messages.InterceptCallback)">
<summary>
Constructs a new intercept handler with the specified identifiers and callback.
</summary>
<param name="identifiers">The identifiers to intercept.</param>
<param name="callback">The intercept handler callback.</param>
</member>
<member name="P:Xabbo.Messages.InterceptHandler.Target">
<summary>
Specifies which clients this handler should be registered for.
The handler will only be attached on the specified client sessions.
</summary>
</member>
<member name="P:Xabbo.Messages.InterceptHandler.UseTargetedIdentifiers">
<summary>
Whether to use client-targeted identifiers.
</summary>
<remarks>
Targeted identifiers will only intercept messages for the their specified client.
For example, a Flash identifier will only intercept messages for the Flash client.
</remarks>
</member>
<member name="P:Xabbo.Messages.InterceptHandler.Headers">
<summary>
Gets the target headers.
</summary>
</member>
<member name="P:Xabbo.Messages.InterceptHandler.Identifiers">
<summary>
Gets the target identifiers.
</summary>
</member>
<member name="P:Xabbo.Messages.InterceptHandler.Callback">
<summary>
Gets the intercept handler callback.
</summary>
</member>
<member name="T:Xabbo.Messages.InterceptMessageCallback`1">
<summary>
Handles an intercepted message.
</summary>
<typeparam name="TMsg">The type of the message.</typeparam>
<param name="intercept">The intercept event arguments.</param>
<param name="msg">The intercepted message.</param>
</member>
<member name="T:Xabbo.Messages.IPacket">
<summary>
Represents a packet of data with a message header.
</summary>
</member>
<member name="P:Xabbo.Messages.IPacket.Header">
<summary>
Gets or sets the message header of the packet.
</summary>
</member>
<member name="P:Xabbo.Messages.IPacket.Client">
<summary>
Gets the client type of the packet's header.
</summary>
</member>
<member name="P:Xabbo.Messages.IPacket.Context">
<summary>
Gets the context this packet was intercepted in.
</summary>
</member>
<member name="P:Xabbo.Messages.IPacket.Buffer">
<summary>
Gets the packet's buffer.
</summary>
</member>
<member name="P:Xabbo.Messages.IPacket.Position">
<summary>
Gets a reference to the current position in the packet.
</summary>
</member>
<member name="P:Xabbo.Messages.IPacket.Length">
<summary>
Gets the length of the packet.
</summary>
</member>
<member name="M:Xabbo.Messages.IPacket.Reader">
<summary>
Creates a new reader for this packet at the current position.
</summary>
</member>
<member name="M:Xabbo.Messages.IPacket.ReaderAt(System.Int32@)">
<summary>
Creates a new reader for this packet at the specified position.
</summary>
</member>
<member name="M:Xabbo.Messages.IPacket.Writer">
<summary>
Creates a new writer for this packet at the current position.
</summary>
</member>
<member name="M:Xabbo.Messages.IPacket.WriterAt(System.Int32@)">
<summary>
Creates a new writer for this packet at the specified position.
</summary>
</member>
<member name="M:Xabbo.Messages.IPacket.Allocate(System.Int32)">
<inheritdoc cref="M:Xabbo.Messages.PacketWriter.Allocate(System.Int32)" />
</member>
<member name="M:Xabbo.Messages.IPacket.ReadSpan(System.Int32)">
<inheritdoc cref="M:Xabbo.Messages.PacketReader.ReadSpan(System.Int32)" />
</member>
<member name="M:Xabbo.Messages.IPacket.WriteSpan(System.ReadOnlySpan{System.Byte})">
<inheritdoc cref="M:Xabbo.Messages.PacketWriter.WriteSpan(System.ReadOnlySpan{System.Byte})" />
</member>
<member name="M:Xabbo.Messages.IPacket.ReadContent">
<inheritdoc cref="M:Xabbo.Messages.PacketReader.ReadContent" />
</member>
<member name="M:Xabbo.Messages.IPacket.WriteContent(System.String)">
<inheritdoc cref="M:Xabbo.Messages.PacketWriter.WriteContent(System.String)" />
</member>
<member name="M:Xabbo.Messages.IPacket.Clear">
<summary>
Clears the packet's buffer and resets its position.
</summary>
</member>
<member name="M:Xabbo.Messages.IPacket.Copy">
<summary>
Creates a copy of this packet.
</summary>
</member>
<member name="T:Xabbo.Messages.IParser`1">
<summary>
Represents an object that can be parsed from a packet.
</summary>
</member>
<member name="M:Xabbo.Messages.IParser`1.Parse(Xabbo.Messages.PacketReader@)">
<summary>
Parses an object of type <typeparamref name="T"/> from a packet using the specified <see cref="T:Xabbo.Messages.PacketReader"/>.
</summary>
</member>
<member name="T:Xabbo.Messages.IParserComposer`1">
<summary>
Represents an object that can be parsed from and composed to a packet.
</summary>
</member>
<member name="T:Xabbo.Messages.IParserContext">
<summary>
Provides additional context to a <see cref="T:Xabbo.Messages.PacketReader"/> or <see cref="T:Xabbo.Messages.PacketWriter"/>.
</summary>
</member>
<member name="P:Xabbo.Messages.IParserContext.Messages">
<summary>
Gets the message manager.
</summary>
</member>
<member name="T:Xabbo.Messages.IRequestFor`1">
<summary>
Provides a method for a request message to check whether a response matches the request.
</summary>
<typeparam name="TRes">The type of the response message.</typeparam>
</member>
<member name="M:Xabbo.Messages.IRequestFor`1.MatchResponse(`0)">
<summary>
Gets whether the response message matches the request message.
</summary>
<param name="msg">The response message to check.</param>
</member>
<member name="T:Xabbo.Messages.IRequestMessage`3">
<summary>
Represents a request message with an associated response message and response data type.
</summary>
<typeparam name="TReq">The type of the request message.</typeparam>
<typeparam name="TRes">The type of the response message.</typeparam>
<typeparam name="TData">The type of the response data.</typeparam>
</member>
<member name="T:Xabbo.Messages.IRequestMessage`2">
<summary>
Represents a request message with an associated response message.
</summary>
<typeparam name="TReq">The type of the request message.</typeparam>
<typeparam name="TRes">The type of the response message.</typeparam>
</member>
<member name="T:Xabbo.Messages.IResponseData`2">
<summary>
Represents a response message with an associated data type.
</summary>
<typeparam name="TMsg">The type of the response message.</typeparam>
<typeparam name="TData">The type of the response data.</typeparam>
</member>
<member name="M:Xabbo.Messages.IResponseData`2.GetData(`0)">
<summary>
Extracts the data from the response message.
</summary>
<param name="msg">The response message.</param>
<returns>The extracted data.</returns>
</member>
<member name="T:Xabbo.Messages.MessageCallback`1">
<summary>
Handles an intercepted message.
</summary>
<param name="msg">The intercepted message.</param>
</member>
<member name="T:Xabbo.Messages.MessageDispatcher">
<summary>
Creates a new <see cref="T:Xabbo.Messages.MessageDispatcher"/> using the specified <see cref="T:Xabbo.Messages.IMessageManager"/>.
</summary>
</member>
<member name="P:Xabbo.Messages.MessageDispatcher.Interceptor">
<summary>
Gets the interceptor associated with this dispatcher.
</summary>
</member>
<member name="M:Xabbo.Messages.MessageDispatcher.Dispatch(Xabbo.Intercept)">
<summary>
Dispatches the specified intercept event to the registered intercept handlers.
</summary>
</member>
<member name="M:Xabbo.Messages.MessageDispatcher.Reset">
<summary>
Releases all registered intercept handlers.
</summary>
</member>
<member name="T:Xabbo.Messages.MessageManager">
<summary>
Manages messages between multiple clients using a mapping file.
</summary>
</member>
<member name="M:Xabbo.Messages.MessageManager.#ctor(System.String,Microsoft.Extensions.Logging.ILoggerFactory)">
<summary>
Manages messages between multiple clients using a mapping file.
</summary>
</member>
<member name="P:Xabbo.Messages.MessageManager.Fetch">
<summary>
Whether to fetch the message map file from the xabbo/messages
GitHub repo upon initialization if it does not exist locally.
</summary>
</member>
<member name="P:Xabbo.Messages.MessageManager.MaxAge">
<summary>
The maximum age of the message map file after which it is invalidated.
</summary>
</member>
<member name="T:Xabbo.Messages.MessageMap">
<summary>
Maps message names between clients.
</summary>
</member>
<member name="T:Xabbo.Messages.MessageNames">
<summary>
Defines an association of message names between clients.
</summary>
</member>
<member name="M:Xabbo.Messages.MessageNames.#ctor(System.String,System.String,System.String)">
<summary>
Defines an association of message names between clients.
</summary>
</member>
<member name="T:Xabbo.Messages.ModifyMessageCallback`1">
<summary>
Handles an intercepted message and allows the handler to modify the intercepted message
by returning a modified or new <see cref="T:Xabbo.Messages.IMessage"/> instance.
</summary>
<typeparam name="TMsg">The type of the message.</typeparam>
</member>
<member name="T:Xabbo.Messages.Packet">
<summary>
Represents a packet of data with a message header.
</summary>
</member>
<member name="M:Xabbo.Messages.Packet.#ctor(Xabbo.Messages.Header,Xabbo.ClientType,Xabbo.Messages.PacketBuffer)">
<summary>
Represents a packet of data with a message header.
</summary>
</member>
<member name="M:Xabbo.Messages.Packet.Dispose">
<summary>
Disposes of this packet's buffer.
</summary>
</member>
<member name="T:Xabbo.Messages.PacketBuffer">
<summary>
Represents a resizable buffer backed by a rented memory span
of <see cref="T:System.Byte"/> from a <see cref="T:System.Buffers.MemoryPool`1"/> .
</summary>
<param name="minimumCapacity">The initial minimum capacity of the rented span of bytes.</param>
</member>
<member name="M:Xabbo.Messages.PacketBuffer.#ctor(System.Int32)">
<summary>
Represents a resizable buffer backed by a rented memory span
of <see cref="T:System.Byte"/> from a <see cref="T:System.Buffers.MemoryPool`1"/> .
</summary>
<param name="minimumCapacity">The initial minimum capacity of the rented span of bytes.</param>
</member>
<member name="P:Xabbo.Messages.PacketBuffer.Length">
<summary>
Gets the length of the buffer.
</summary>
</member>
<member name="P:Xabbo.Messages.PacketBuffer.Span">
<summary>
Gets the memory of the buffer as a <see cref="T:System.Span`1"/>.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketBuffer.#ctor(System.ReadOnlySpan{System.Byte})">
<summary>
Constructs a new buffer and copies the specified <see cref="T:System.ReadOnlySpan`1"/> into its internal memory.
</summary>
<param name="data">The data to copy into this buffer.</param>
</member>
<member name="M:Xabbo.Messages.PacketBuffer.#ctor(System.Buffers.ReadOnlySequence{System.Byte}@)">
<summary>
Constructs a new buffer and copies the specified <see cref="T:System.Buffers.ReadOnlySequence`1"/> into its internal memory.
</summary>
<param name="data">The data to copy into this buffer.</param>
</member>
<member name="M:Xabbo.Messages.PacketBuffer.Grow(System.Int32)">
<summary>
Grows the buffer to the specified length if the current length is insufficient.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketBuffer.Allocate(System.Int32,System.Int32)">
<summary>
Allocates <paramref name="length"/> bytes from the <paramref name="start"/> position
and returns the allocated range as a <see cref="T:System.Span`1"/> of bytes.
<para/>
If <paramref name="start"/>+<paramref name="length"/> is greater than the buffer length,
the buffer is grown to support the new length.
<para/>
<paramref name="start"/> may not be greater than the current length.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketBuffer.Resize(System.Range,System.Int32)">
<summary>
Resizes the specified range of the buffer to the specified length and returns
the resized range as a <see cref="T:System.Span`1"/> of bytes.
<para/>
The tail portion of the buffer after the end of the range will be copied into
the correct position.
<para/>
If the range grows in length, the expanded portion of the range is not cleared,
so it is the caller's responsibility to write valid data to the resulting span.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketBuffer.Clear">
<summary>
Resets the buffer's length to zero.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketBuffer.Dispose">
<summary>
Disposes of this buffer and releases its memory back to the memory pool.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketBuffer.Copy">
<summary>
Creates a new copy of this buffer.
</summary>
</member>
<member name="T:Xabbo.Messages.PacketReader">
<summary>
Provides primitive packet read operations.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.#ctor(Xabbo.Messages.IPacket,System.Int32@,Xabbo.Messages.IParserContext)">
<summary>
Provides primitive packet read operations.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadSpan(System.Int32)">
<summary>
Reads a <see cref="T:System.Span`1"/> of bytes of length <paramref name="n"/> from the current position and advances it.
</summary>
<param name="n">The number of bytes to read.</param>
<exception cref="T:System.IndexOutOfRangeException">If the current position plus the specified length exceeds the length of the packet.</exception>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadBool">
<summary>
Reads a <see cref="T:System.Boolean"/> from the current position and advances it.
<para/>
Decoded as a <see cref="T:Xabbo.Messages.VL64"/> on Shockwave, otherwise as a <see cref="T:System.Byte"/> .
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadByte">
<summary>
Reads a <see cref="T:System.Byte"/> from the current position and advances it.
<para/>
Not supported on Shockwave.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">If the <see cref="P:Xabbo.Messages.PacketReader.Client"/> is <see cref="F:Xabbo.ClientType.Shockwave"/>.</exception>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadShort">
<summary>
Reads a <see cref="T:System.Int16"/> from the current position and advances it.
<para/>
Decoded as a <see cref="T:Xabbo.Messages.B64"/> on Shockwave, otherwise as a 16-bit integer.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadShortArray">
<summary>
Reads a short array from the current position and advances it.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadInt">
<summary>
Reads an <see cref="T:System.Int32"/> from the current position and advances it.
<para/>
Decoded as a <see cref="T:Xabbo.Messages.VL64"/> on Shockwave, otherwise as a 32-bit integer.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadIntArray">
<summary>
Reads an int array from the current position and advances it.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadFloat">
<summary>
Reads a <see cref="T:System.Single"/> from the current position and advances it.
<para/>
Read as a <see cref="T:System.String"/> on Flash and Shockwave, otherwise decoded as a 32-bit floating point number.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadLong">
<summary>
Reads a <see cref="T:System.Int64"/> from the current position and advances it.
<para/>
Decoded as a 64-bit integer. Not supported on Flash or Shockwave.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">
If the <see cref="P:Xabbo.Messages.PacketReader.Client"/> is <see cref="F:Xabbo.ClientType.Flash"/> or <see cref="F:Xabbo.ClientType.Shockwave"/>.
</exception>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadString">
<summary>
Reads a <see cref="T:System.String"/> from the current position and advances it.
<para/>
On Shockwave, when the header direction is incoming, it is decoded as a sequence of characters terminated by a <c>0x02</c> byte.
<para/>
Otherwise, it is decoded as a <see cref="T:System.Int16"/> length-prefixed UTF-8 <see cref="T:System.String"/>.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadStringArray">
<summary>
Reads a string array from the current position and advances it.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadId">
<summary>
Reads an <see cref="T:Xabbo.Id"/> from the current position and advances it.
<para/>
Read as a <see cref="T:System.Int64"/> on Unity, or an <see cref="T:System.Int32"/> on Flash and Shockwave.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">If the client type is invalid.</exception>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadIdArray">
<summary>
Reads an Id array from the current position and advances it.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadLength">
<summary>
Reads a <see cref="P:Xabbo.Messages.PacketReader.Length"/> from the current position and advances it.
<para/>
Read as a <see cref="T:System.Int16"/> on Unity, or an <see cref="T:System.Int32"/> on Flash and Shockwave.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">If the client type is invalid.</exception>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadB64">
<summary>
Reads a <see cref="T:Xabbo.Messages.B64"/> from the current position and advances it.
<para/>
Not supported on Unity or Flash.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">If the <see cref="P:Xabbo.Messages.PacketReader.Client"/> is <see cref="F:Xabbo.ClientType.Unity"/> or <see cref="F:Xabbo.ClientType.Flash"/>.</exception>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadVL64">
<summary>
Reads a <see cref="T:Xabbo.Messages.VL64"/> from the current position and advances it.
<para/>
Not supported on Unity or Flash.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">If the <see cref="P:Xabbo.Messages.PacketReader.Client"/> is <see cref="F:Xabbo.ClientType.Unity"/> or <see cref="F:Xabbo.ClientType.Flash"/>.</exception>
</member>
<member name="M:Xabbo.Messages.PacketReader.ReadContent">
<summary>
Reads the contents of the packet as a string
and advances the position to the end of the packet.
The position must be at the start of the packet.
<para/>
Only supported on Shockwave.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.Parse``1">
<summary>
Parses a <typeparamref name="T"/> from the current position and advances it.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketReader.ParseArray``1">
<summary>
Parses an array of <typeparamref name="T"/> from the current position and advances it.
</summary>
</member>
<member name="T:Xabbo.Messages.PacketWriter">
<summary>
Provides primitive packet write operations.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.#ctor(Xabbo.Messages.IPacket,System.Int32@,Xabbo.Messages.IParserContext)">
<summary>
Provides primitive packet write operations.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.Allocate(System.Int32)">
<summary>
Allocates the specified number of bytes from the current position
and returns the allocated range as a <see cref="T:System.Span`1"/> of bytes.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.Resize(System.Int32,System.Int32)">
<summary>
Resizes a range of bytes from the current position of length `<paramref name="pre"/>` to length `<paramref name="post"/>`
and returns the resized range as a <see cref="T:System.Span`1"/> of bytes.
</summary>
<param name="pre">The length to resize from.</param>
<param name="post">The length to resize to</param>
<returns>The resized range as a <see cref="T:System.Span`1"/> of bytes.</returns>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteSpan(System.ReadOnlySpan{System.Byte})">
<summary>
Writes the specified <see cref="T:System.Span`1"/> of bytes to the current position.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteBool(System.Boolean)">
<summary>
Writes the specified <see cref="T:System.Boolean"/> value to the current position and advances it.
<para/>
Encoded as a <see cref="T:Xabbo.Messages.VL64"/> on Shockwave, otherwise as a <see cref="T:System.Byte"/> .
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteByte(System.Byte)">
<summary>
Writes the specified <see cref="T:System.Byte"/> value to the current position and advances it.
<para/>
Not supported on Shockwave.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">If the <see cref="P:Xabbo.Messages.PacketWriter.Client"/> is <see cref="F:Xabbo.ClientType.Shockwave"/>.</exception>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteShort(System.Int16)">
<summary>
Writes the specified <see cref="T:System.Int16"/> value to the current position and advances it.
<para/>
Encoded as a <see cref="T:Xabbo.Messages.B64"/> on Shockwave, otherwise as a 16-bit integer.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteShortArray(System.Collections.Generic.IEnumerable{System.Int16})">
<summary>
Writes a short array to the current position and advances it.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteInt(System.Int32)">
<summary>
Writes the specified <see cref="T:System.Int32"/> value to the current position and advances it.
<para/>
Encoded as a <see cref="T:Xabbo.Messages.VL64"/> on Shockwave, otherwise as a 32-bit integer.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteIntArray(System.Collections.Generic.IEnumerable{System.Int32})">
<summary>
Writes an int array to the current position and advances it.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteFloat(System.Single)">
<summary>
Writes the specified <see cref="T:System.Single"/> value to the current position and advances it.
<para/>
Written as a <see cref="T:System.String"/> on Flash and Shockwave, otherwise encoded as a 32-bit floating point number.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteLong(System.Int64)">
<summary>
Writes the specified <see cref="T:System.Int64"/> value to the current position and advances it.
<para/>
Encoded as a 64-bit integer. Not supported on Flash or Shockwave.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">
If the <see cref="P:Xabbo.Messages.PacketWriter.Client"/> is <see cref="F:Xabbo.ClientType.Flash"/> or <see cref="F:Xabbo.ClientType.Shockwave"/>.
</exception>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteString(System.String)">
<summary>
Writes the specified <see cref="T:System.String"/> value to the current position and advances it.
<para/>
On Shockwave, when the header direction is incoming, it is encoded as a sequence of characters terminated by a <c>0x02</c> byte.
<para/>
Otherwise, it is encoded as a <see cref="T:System.Int16"/> length-prefixed UTF-8 <see cref="T:System.String"/>.
</summary>
<exception cref="T:System.ArgumentException">If the string length exceeds the maximum value of an unsigned 16-bit integer.</exception>
<exception cref="T:System.ArgumentNullException">If the string is null.</exception>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteStringArray(System.Collections.Generic.IEnumerable{System.String})">
<summary>
Writes a string array to the current position and advances it.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteId(Xabbo.Id)">
<summary>
Writes the specified <see cref="T:Xabbo.Id"/> value to the current position and advances it.
<para/>
Written as a <see cref="T:System.Int64"/> on Unity, or an <see cref="T:System.Int32"/> on Flash and Shockwave.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">If the client type is invalid.</exception>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteIdArray(System.Collections.Generic.IEnumerable{Xabbo.Id})">
<summary>
Writes an Id array to the current position and advances it.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteLength(Xabbo.Length)">
<summary>
Writes the specified <see cref="P:Xabbo.Messages.PacketWriter.Length"/> value to the current position and advances it.
<para/>
Written as a <see cref="T:System.Int16"/> on Unity, or an <see cref="T:System.Int32"/> on Flash and Shockwave.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">If the client type is invalid.</exception>
<exception cref="T:System.ArgumentOutOfRangeException">If the value is negative.</exception>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteB64(Xabbo.Messages.B64)">
<summary>
Writes the specified <see cref="T:Xabbo.Messages.B64"/> value to the current position and advances it.
<para/>
Not supported on Unity or Flash.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">If the <see cref="P:Xabbo.Messages.PacketWriter.Client"/> is <see cref="F:Xabbo.ClientType.Unity"/> or <see cref="F:Xabbo.ClientType.Flash"/>.</exception>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteVL64(Xabbo.Messages.VL64)">
<summary>
Writes the specified <see cref="T:Xabbo.Messages.VL64"/> value to the current position and advances it.
<para/>
Not supported on Unity or Flash.
</summary>
<exception cref="T:Xabbo.UnsupportedClientException">If the <see cref="P:Xabbo.Messages.PacketWriter.Client"/> is <see cref="F:Xabbo.ClientType.Unity"/> or <see cref="F:Xabbo.ClientType.Flash"/>.</exception>
</member>
<member name="M:Xabbo.Messages.PacketWriter.WriteContent(System.String)">
<summary>
Replaces the packet buffer with the specified content
and advances the position to the end of the packet.
The position must be at the start of the packet.
<para/>
Only supported on Shockwave.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.Compose``1(``0)">
<summary>
Composes the specified <typeparamref name="T"/> to the current position and advances it.
</summary>
</member>
<member name="M:Xabbo.Messages.PacketWriter.ComposeArray``1(System.Collections.Generic.IEnumerable{``0})">
<summary>
Composes the specified array of <typeparamref name="T"/> to the current position and advances it.
</summary>
</member>
<member name="T:Xabbo.Messages.UnresolvedIdentifiersException">
<summary>
Thrown when a set of <see cref="T:Xabbo.Messages.Identifier"/>s fail to resolve to their respective <see cref="T:Xabbo.Messages.Header"/>s.
</summary>
<param name="identifiers">The identifiers that failed to resolve.</param>
</member>
<member name="M:Xabbo.Messages.UnresolvedIdentifiersException.#ctor(Xabbo.Messages.Identifiers)">
<summary>
Thrown when a set of <see cref="T:Xabbo.Messages.Identifier"/>s fail to resolve to their respective <see cref="T:Xabbo.Messages.Header"/>s.
</summary>
<param name="identifiers">The identifiers that failed to resolve.</param>
</member>
<member name="T:Xabbo.Messages.VL64">
<summary>
Represents a signed variable-length radix-64 encoded integer.
</summary>
</member>
<member name="F:Xabbo.Messages.VL64.MinValue">
<summary>
The minimum value of a <see cref="T:Xabbo.Messages.VL64"/>.
</summary>
</member>
<member name="F:Xabbo.Messages.VL64.MaxValue">
<summary>
The maximum value of a <see cref="T:Xabbo.Messages.VL64"/>.
</summary>
</member>
<member name="M:Xabbo.Messages.VL64.EncodeLength(Xabbo.Messages.VL64)">
<summary>
Returns the number of bytes required to represent the specified VL64.
</summary>
</member>
<member name="M:Xabbo.Messages.VL64.DecodeLength(System.Byte)">
<summary>
Returns the number of bytes required to decode a VL64, given (and including) the first byte.
</summary>
</member>
<member name="M:Xabbo.Messages.VL64.Encode(System.Span{System.Byte},Xabbo.Messages.VL64)">
<summary>
Encodes a VL64 value to the specified byte span.
</summary>
<param name="buf">The span to encode into.</param>
<param name="value">The value to encode.</param>
<exception cref="T:System.ArgumentOutOfRangeException">
If the value is outside the range of a VL64.
</exception>
<exception cref="T:System.ArgumentException">
If the length of the provided span is insufficient to encode the specified VL64 value.
</exception>
</member>
<member name="M:Xabbo.Messages.VL64.Decode(System.ReadOnlySpan{System.Byte})">
<summary>
Decodes a VL64 value from the specified read-only byte span.
</summary>
<param name="buf">The span to decode from.</param>
<returns>The decoded VL64 value.</returns>
<exception cref="T:System.ArgumentOutOfRangeException">
If the provided span does not have enough bytes to decode a VL64 based on the length decoded from the first byte.
</exception>
<exception cref="T:System.ArgumentException">
If the length decoded from the first byte is outside the valid range of 1-6,
or any of the input bytes' 2 most significant bits are not set to <c>01</c>.
</exception>
</member>
<member name="M:Xabbo.Messages.VL64.ToString">
<summary>
Returns the value of this <see cref="T:Xabbo.Messages.VL64"/> as a string.
</summary>
</member>
<member name="T:Xabbo.PacketContent">
<summary>
Represents a packet's content as a string.
</summary>
<remarks>
Only supported on Shockwave.
This can only be read or written when the position is at the start of the packet,
after which the position will be set to the end of the packet.
</remarks>
</member>
<member name="M:Xabbo.PacketContent.#ctor(System.String)">
<summary>
Represents a packet's content as a string.
</summary>
<remarks>
Only supported on Shockwave.
This can only be read or written when the position is at the start of the packet,
after which the position will be set to the end of the packet.
</remarks>
</member>
<member name="T:Xabbo.Session">
<summary>
Represents a connection session.
</summary>
<param name="Hotel">The hotel of the current session.</param>
<param name="Client">The client of the current session.</param>
</member>
<member name="M:Xabbo.Session.#ctor(Xabbo.Hotel,Xabbo.Client)">
<summary>
Represents a connection session.
</summary>
<param name="Hotel">The hotel of the current session.</param>
<param name="Client">The client of the current session.</param>
</member>
<member name="P:Xabbo.Session.Hotel">
<summary>The hotel of the current session.</summary>
</member>
<member name="P:Xabbo.Session.Client">
<summary>The client of the current session.</summary>
</member>
<member name="F:Xabbo.Session.None">
<summary>
Represents no session.
</summary>
</member>
<member name="M:Xabbo.Session.Is(Xabbo.ClientType)">
<summary>
Gets whether the session is any of the specified clients.
</summary>
<param name="client">
The client to test for. This may be a combination of multiple clients.
</param>
<returns><c>true</c> if the specified client type contains the current session's client.</returns>
</member>
<member name="P:Xabbo.SourceGenerationContext.Boolean">
<summary>
Defines the source generated JSON serialization contract metadata for a given type.
</summary>
</member>
<member name="P:Xabbo.SourceGenerationContext.ListHotel">
<summary>
Defines the source generated JSON serialization contract metadata for a given type.
</summary>
</member>
<member name="P:Xabbo.SourceGenerationContext.Hotel">
<summary>
Defines the source generated JSON serialization contract metadata for a given type.
</summary>
</member>
<member name="P:Xabbo.SourceGenerationContext.String">
<summary>
Defines the source generated JSON serialization contract metadata for a given type.
</summary>
</member>
<member name="P:Xabbo.SourceGenerationContext.Default">
<summary>
The default <see cref="T:System.Text.Json.Serialization.JsonSerializerContext"/> associated with a default <see cref="T:System.Text.Json.JsonSerializerOptions"/> instance.
</summary>
</member>
<member name="P:Xabbo.SourceGenerationContext.GeneratedSerializerOptions">
<summary>
The source-generated options associated with this context.
</summary>
</member>
<member name="M:Xabbo.SourceGenerationContext.#ctor">
<inheritdoc/>
</member>
<member name="M:Xabbo.SourceGenerationContext.#ctor(System.Text.Json.JsonSerializerOptions)">
<inheritdoc/>
</member>
<member name="M:Xabbo.SourceGenerationContext.GetTypeInfo(System.Type)">
<inheritdoc/>
</member>
<member name="T:Xabbo.UnhandledInterceptException">
<summary>
Thrown when an unhandled exception is thrown from an intercept handler.
</summary>
<param name="header">The header of the message</param>
<param name="handler">The handler that the exception was thrown from.</param>
<param name="innerException">The exception that was thrown.</param>
</member>
<member name="M:Xabbo.UnhandledInterceptException.#ctor(Xabbo.Messages.Header,Xabbo.Messages.InterceptHandler,System.Exception)">
<summary>
Thrown when an unhandled exception is thrown from an intercept handler.
</summary>
<param name="header">The header of the message</param>
<param name="handler">The handler that the exception was thrown from.</param>
<param name="innerException">The exception that was thrown.</param>
</member>
<member name="P:Xabbo.UnhandledInterceptException.Header">
<summary>
The header of the intercepted message when the exception was thrown.
</summary>
</member>
<member name="P:Xabbo.UnhandledInterceptException.Handler">
<summary>
The handler that the exception was thrown from.
</summary>
</member>
<member name="T:Xabbo.UnsupportedClientException">
<summary>
Thrown when an operation is not supported for the current client.
</summary>
</member>
<member name="M:Xabbo.UnsupportedClientException.#ctor(Xabbo.ClientType)">
<summary>
Thrown when an operation is not supported for the current client.
</summary>
</member>
<member name="P:Xabbo.UnsupportedClientException.Client">
<summary>
The client that is not supported.
</summary>
</member>
<member name="M:Xabbo.UnsupportedClientException.ThrowIfNone(Xabbo.ClientType)">
<summary>
Throws if the specified client is not a known client.
</summary>
</member>
<member name="M:Xabbo.UnsupportedClientException.ThrowIf(Xabbo.ClientType,Xabbo.ClientType)">
<summary>
Throws if the client is any of the specified clients.
</summary>
</member>
<member name="M:Xabbo.UnsupportedClientException.ThrowIfNoneOr(Xabbo.ClientType,Xabbo.ClientType)">
<summary>
Throws if the client is unknown or any of the specified clients.
</summary>
</member>
<member name="M:Xabbo.UnsupportedClientException.ThrowIfOrigins(Xabbo.ClientType)">
<summary>
Throws if the client is the Shockwave client.
</summary>
</member>
<member name="M:Xabbo.UnsupportedClientException.ThrowIfModern(Xabbo.ClientType)">
<summary>
Throws if the client is the Unity or Flash client.
</summary>
</member>
<member name="M:XabboExtensions.Read``1(Xabbo.Messages.IPacket)">
<summary>
Reads a value of the specified type from the current position in the packet.
</summary>
</member>
<member name="M:XabboExtensions.ReadAt``1(Xabbo.Messages.IPacket,System.Int32)">
<summary>
Reads a value of the specified type from the specified position in the packet.
</summary>
</member>
<member name="M:XabboExtensions.Write``1(Xabbo.Messages.IPacket,``0)">
<summary>
Writes a value of the specified type to the current position in the packet.
</summary>
</member>
<member name="M:XabboExtensions.WriteAt``1(Xabbo.Messages.IPacket,System.Int32,``0)">
<summary>
Writes a value of the specified type to the specified position in the packet.
</summary>
</member>
<member name="M:XabboExtensions.Replace``1(Xabbo.Messages.IPacket,``0)">
<summary>
Replaces a value of the specified type at the current position in the packet.
</summary>
</member>
<member name="M:XabboExtensions.ReplaceAt``1(Xabbo.Messages.IPacket,System.Int32,``0)">
<summary>
Replaces a value of the specified type at the specified position in the packet.
</summary>
</member>
<member name="M:XabboExtensions.Modify``1(Xabbo.Messages.IPacket,System.Func{``0,``0})">
<summary>
Modifies a value of the specified type at the current position in the packet.
</summary>
</member>
<member name="M:XabboExtensions.ModifyAt``1(Xabbo.Messages.IPacket,System.Int32,System.Func{``0,``0})">
<summary>
Modifies a value of the specified type at the specified position in the packet.
</summary>
</member>
</members>
</doc>