SignalR additional xml docs (#7980)

Reviewed our xml docs as both ramping back up after leave and docathon. Things look pretty good, added a few things to some public methods.
This commit is contained in:
Andrew Stanton-Nurse 2019-03-11 09:29:41 -07:00 committed by GitHub
commit 8759aa2fc0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 47 additions and 4 deletions

View File

@ -63,6 +63,33 @@ namespace Microsoft.AspNetCore.SignalR.Client
private ConnectionState _connectionState; private ConnectionState _connectionState;
private int _serverProtocolMinorVersion; private int _serverProtocolMinorVersion;
/// <summary>
/// Occurs when the connection is closed. The connection could be closed due to an error or due to either the server or client intentionally
/// closing the connection without error.
/// </summary>
/// <remarks>
/// If this event was triggered from a connection error, the <see cref="Exception"/> that occurred will be passed in as the
/// sole argument to this handler. If this event was triggered intentionally by either the client or server, then
/// the argument will be <see langword="null"/>.
/// </remarks>
/// <example>
/// The following example attaches a handler to the <see cref="Closed"/> event, and checks the provided argument to determine
/// if there was an error:
///
/// <code>
/// connection.Closed += (exception) =>
/// {
/// if (exception == null)
/// {
/// Console.WriteLine("Connection closed without error.");
/// }
/// else
/// {
/// Console.WriteLine($"Connection closed due to an error: {exception.Message}");
/// }
/// };
/// </code>
/// </example>
public event Func<Exception, Task> Closed; public event Func<Exception, Task> Closed;
// internal for testing purposes // internal for testing purposes

View File

@ -9,6 +9,15 @@ namespace Microsoft.AspNetCore.Http.Connections
{ {
public static class HttpConnectionContextExtensions public static class HttpConnectionContextExtensions
{ {
/// <summary>
/// Gets the <see cref="HttpContext"/> associated with the connection, if there is one.
/// </summary>
/// <param name="connection">The <see cref="ConnectionContext"/> representing the connection.</param>
/// <returns>The <see cref="HttpContext"/> associated with the connection, or <see langword="null"/> if the connection is not HTTP-based.</returns>
/// <remarks>
/// SignalR connections can run on top of HTTP transports like WebSockets or Long Polling, or other non-HTTP transports. As a result,
/// this method can sometimes return <see langword="null"/> depending on the configuration of your application.
/// </remarks>
public static HttpContext GetHttpContext(this ConnectionContext connection) public static HttpContext GetHttpContext(this ConnectionContext connection)
{ {
return connection.Features.Get<IHttpContextFeature>()?.HttpContext; return connection.Features.Get<IHttpContextFeature>()?.HttpContext;

View File

@ -9,6 +9,10 @@ namespace Microsoft.AspNetCore.SignalR
/// <summary> /// <summary>
/// The exception thrown from a hub when an error occurs. /// The exception thrown from a hub when an error occurs.
/// </summary> /// </summary>
/// <remarks>
/// Exceptions often contain sensitive information, such as connection information. Because of this, SignalR does not expose the details
/// of exceptions that occur on the server to the client. However, instances of <see cref="HubException"/> <b>are</b> sent to the client.
/// </remarks>
[Serializable] [Serializable]
public class HubException : Exception public class HubException : Exception
{ {

View File

@ -19,6 +19,9 @@ using Microsoft.Extensions.Logging;
namespace Microsoft.AspNetCore.SignalR namespace Microsoft.AspNetCore.SignalR
{ {
/// <summary>
/// Encapsulates all information about an individual connection to a SignalR Hub.
/// </summary>
public class HubConnectionContext public class HubConnectionContext
{ {
private static readonly Action<object> _cancelReader = state => ((PipeReader)state).CancelPendingRead(); private static readonly Action<object> _cancelReader = state => ((PipeReader)state).CancelPendingRead();