<?xml version="1.0"?>
<doc>
    <assembly>
        <name>NsqSharp</name>
    </assembly>
    <members>
        <member name="T:NsqSharp.Api.NsqdHttpClient">
            <summary>An nsqd HTTP client.</summary>
        </member>
        <member name="T:NsqSharp.Api.NsqHttpApi">
            <summary>
            HTTP client for interacting with the common API between nsqd and nsqlookupd. See http://nsq.io/components/nsqd.html#pub.
            See <see cref="T:NsqSharp.Api.NsqdHttpClient"/> and <see cref="T:NsqSharp.Api.NsqLookupdHttpClient"/>.
            </summary>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.#ctor(System.String,System.TimeSpan)">
            <summary>Initializes a new instance of <see cref="T:NsqSharp.Api.NsqHttpApi"/> class.</summary>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="httpAddress"/> is <c>null</c> or empty.
            </exception>
            <param name="httpAddress">The nsqd or nsqlookupd HTTP address.</param>
            <param name="httpRequestTimeout">The HTTP request timeout.</param>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.CreateTopic(System.String)">
            <summary>
            Create a topic. Topic creation happens automatically on publish, use this method to pre-create a topic.
            </summary>
            <param name="topic">The topic.</param>
            <returns>The response from the server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.DeleteTopic(System.String)">
            <summary>
            Delete a topic.
            </summary>
            <param name="topic">The topic.</param>
            <returns>The response from the server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.CreateChannel(System.String,System.String)">
            <summary>
            Create a channel. Channel creation happens automatically on subscribe, use this method to pre-create a channel.
            </summary>
            <param name="topic">The topic.</param>
            <param name="channel">The channel.</param>
            <returns>The response from the server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.DeleteChannel(System.String,System.String)">
            <summary>
            Delete a channel.
            </summary>
            <param name="topic">The topic.</param>
            <param name="channel">The channel.</param>
            <returns>The response from the server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.GetInfo">
            <summary>
            Returns version information as a JSON string.
            </summary>
            <returns>The response from the server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.Ping">
            <summary>
            Monitoring endpoint, should return OK. It returns a 500 if it is not healthy. At the moment, the only unhealthy
            state would be if it failed to write messages to disk when overflow occurred.
            </summary>
            <returns>The response from the server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.ValidateTopic(System.String)">
            <summary>Validates the topic name.</summary>
            <exception cref="T:System.ArgumentNullException">Thrown when one or more required arguments are null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.
            </exception>
            <param name="topic">The topic name.</param>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.ValidateTopicAndChannel(System.String,System.String)">
            <summary>Validates the topic and channel name.</summary>
            <exception cref="T:System.ArgumentNullException">Thrown when one or more required arguments are null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when one or more arguments have unsupported or illegal values.
            </exception>
            <param name="topic">The topic name.</param>
            <param name="channel">The channel name.</param>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.GetFullUrl(System.String)">
            <summary>Gets the HTTP address plus route.</summary>
            <exception cref="T:System.ArgumentNullException">Thrown when one or more required arguments are null.</exception>
            <param name="route">The route.</param>
            <returns>The full URL.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.Post(System.String,System.Byte[])">
            <summary>POSTs to the specified route using the HTTP address from the constructor.</summary>
            <param name="route">The route.</param>
            <param name="body">The body.</param>
            <returns>The response from the server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.Get(System.String)">
            <summary>GETs from the specified route using the HTTP address from the constructor.</summary>
            <param name="route">The route.</param>
            <returns>The response from the server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqHttpApi.Request(System.String,NsqSharp.Api.HttpMethod,System.Int32,System.Byte[])">
            <summary>Initiates and HTTP request to the specified <paramref name="endpoint"/>.</summary>
            <exception cref="T:System.Exception">Thrown when an exception error condition occurs.</exception>
            <param name="endpoint">The endpoint.</param>
            <param name="httpMethod">The HTTP method.</param>
            <param name="timeoutMilliseconds">The timeout in milliseconds.</param>
            <param name="body">The body.</param>
            <returns>The response from the server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.#ctor(System.String,System.TimeSpan)">
            <summary>Initializes a new instance of <see cref="T:NsqSharp.Api.NsqLookupdHttpClient"/> class.</summary>
            <param name="nsqdHttpAddress">The nsqlookupd HTTP address.</param>
            <param name="httpRequestTimeout">The HTTP request timeout.</param>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.Publish(System.String,System.String)">
            <summary>
            Publishes a message.
            </summary>
            <param name="topic">The topic.</param>
            <param name="message">The message.</param>
            <returns>The response from the nsqd HTTP server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.Publish(System.String,System.Byte[])">
            <summary>
            Publishes a message.
            </summary>
            <param name="topic">The topic.</param>
            <param name="message">The message.</param>
            <returns>The response from the nsqd HTTP server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.PublishMultiple(System.String,System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Publishes multiple messages. More efficient than calling Publish several times for the same message type.
            See http://nsq.io/components/nsqd.html#mpub.
            </summary>
            <param name="topic">The topic.</param>
            <param name="messages">The messages.</param>
            <returns>The response from the nsqd HTTP server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.PublishMultiple(System.String,System.Collections.Generic.IEnumerable{System.Byte[]})">
            <summary>
            Publishes multiple messages. More efficient than calling Publish several times for the same message type.
            See http://nsq.io/components/nsqd.html#mpub.
            </summary>
            <param name="topic">The topic.</param>
            <param name="messages">The messages.</param>
            <returns>The response from the nsqd HTTP server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.EmptyTopic(System.String)">
            <summary>
            Empty a topic.
            </summary>
            <param name="topic">The topic.</param>
            <returns>The response from the nsqd HTTP server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.EmptyChannel(System.String,System.String)">
            <summary>
            Empty a channel.
            </summary>
            <param name="topic">The topic.</param>
            <param name="channel">The channel.</param>
            <returns>The response from the nsqd HTTP server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.PauseTopic(System.String)">
            <summary>
            Pause a topic.
            </summary>
            <param name="topic">The topic.</param>
            <returns>The response from the nsqd HTTP server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.UnpauseTopic(System.String)">
            <summary>
            Unpause a topic.
            </summary>
            <param name="topic">The topic.</param>
            <returns>The response from the nsqd HTTP server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.PauseChannel(System.String,System.String)">
            <summary>
            Pause a channel.
            </summary>
            <param name="topic">The topic.</param>
            <param name="channel">The channel.</param>
            <returns>The response from the nsqd HTTP server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.UnpauseChannel(System.String,System.String)">
            <summary>
            Unpause a channel.
            </summary>
            <param name="topic">The topic.</param>
            <param name="channel">The channel.</param>
            <returns>The response from the nsqd HTTP server.</returns>
        </member>
        <member name="M:NsqSharp.Api.NsqdHttpClient.GetStats">
            <summary>
            Returns internal instrumented statistics.
            </summary>
            <returns>The response from the nsqd HTTP server.</returns>
        </member>
        <member name="T:NsqSharp.Api.NsqdStats">
            <summary>
            Statistics information for nsqd. See <see cref="M:NsqSharp.Api.NsqdHttpClient.GetStats"/>.
            </summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStats.Version">
            <summary>version</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStats.Health">
            <summary>health</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStats.Topics">
            <summary>topics</summary>
        </member>
        <member name="T:NsqSharp.Api.NsqdStatsTopic">
            <summary>
            Topic information for nsqd. See <see cref="M:NsqSharp.Api.NsqdHttpClient.GetStats"/>.
            </summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsTopic.TopicName">
            <summary>topic_name</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsTopic.Channels">
            <summary>channels</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsTopic.Depth">
            <summary>depth</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsTopic.BackendDepth">
            <summary>backend_depth</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsTopic.MessageCount">
            <summary>message_count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsTopic.Paused">
            <summary>paused</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsTopic.EndToEndProcessingLatency">
            <summary>e2e_processing_latency</summary>
        </member>
        <member name="T:NsqSharp.Api.NsqdStatsChannel">
            <summary>
            Channel information for nsqd. See <see cref="M:NsqSharp.Api.NsqdHttpClient.GetStats"/>.
            </summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsChannel.ChannelName">
            <summary>channel_name</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsChannel.Depth">
            <summary>depth</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsChannel.BackendDepth">
            <summary>backend_depth</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsChannel.InFlightCount">
            <summary>in_flight_count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsChannel.DeferredCount">
            <summary>deferred_count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsChannel.MessageCount">
            <summary>message_count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsChannel.RequeueCount">
            <summary>requeue_count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsChannel.TimeoutCount">
            <summary>timeout_count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsChannel.Clients">
            <summary>clients</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsChannel.Paused">
            <summary>paused</summary>
        </member>
        <member name="T:NsqSharp.Api.NsqdStatsClient">
            <summary>
            Client information for nsqd. See <see cref="M:NsqSharp.Api.NsqdHttpClient.GetStats"/>.
            </summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.Name">
            <summary>name</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.ClientId">
            <summary>client_id</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.Hostname">
            <summary>hostname</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.Version">
            <summary>version</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.RemoteAddress">
            <summary>remote_address</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.State">
            <summary>state</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.ReadyCount">
            <summary>ready_count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.InFlightCount">
            <summary>in_flight_count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.MessageCount">
            <summary>message_count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.FinishCount">
            <summary>finish_count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.RequeueCount">
            <summary>requeue_count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.ConnectTimestamp">
            <summary>connect_ts</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.SampleRate">
            <summary>sample_rate</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.Deflate">
            <summary>deflate</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.Snappy">
            <summary>snappy</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.UserAgent">
            <summary>user_agent</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.Tls">
            <summary>tls</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.TlsCipherSuite">
            <summary>tls_cipher_suite</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.TlsVersion">
            <summary>tls_version</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.TlsNegotiatedProtocol">
            <summary>tls_negotiated_protocol</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsClient.TlsNegotiatedProtocolIsMutual">
            <summary>tls_negotiated_protocol_is_mutual</summary>
        </member>
        <member name="T:NsqSharp.Api.NsqdStatsEndToEndProcessingLatency">
            <summary></summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsEndToEndProcessingLatency.Count">
            <summary>count</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsEndToEndProcessingLatency.Percentiles">
            <summary>percentiles</summary>
        </member>
        <member name="T:NsqSharp.Api.NsqdStatsEndToEndProcessingLatencyPercentile">
            <summary></summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsEndToEndProcessingLatencyPercentile.Quantile">
            <summary>quantile</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsEndToEndProcessingLatencyPercentile.Value">
            <summary>value</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqdStatsEndToEndProcessingLatencyPercentile.Time">
            <summary>time</summary>
        </member>
        <member name="T:NsqSharp.Api.NsqLookupdHttpClient">
            <summary>An nsqlookupd HTTP client.</summary>
        </member>
        <member name="M:NsqSharp.Api.NsqLookupdHttpClient.#ctor(System.String,System.TimeSpan)">
            <summary>Initializes a new instance of <see cref="T:NsqSharp.Api.NsqLookupdHttpClient"/> class.</summary>
            <param name="nsqlookupdHttpAddress">The nsqlookupd HTTP address.</param>
            <param name="httpRequestTimeout">The HTTP request timeout.</param>
        </member>
        <member name="M:NsqSharp.Api.NsqLookupdHttpClient.Lookup(System.String)">
            <summary>Returns a list of nsqd producers and channel information for a topic.</summary>
            <param name="topic">The topic to list producers for.</param>
        </member>
        <member name="M:NsqSharp.Api.NsqLookupdHttpClient.GetTopics">
            <summary>Returns a list of all known topics.</summary>
        </member>
        <member name="M:NsqSharp.Api.NsqLookupdHttpClient.GetChannels(System.String)">
            <summary>Returns a list of all known channels of a <paramref name="topic"/>.</summary>
            <param name="topic">The topic to list channels for.</param>
        </member>
        <member name="M:NsqSharp.Api.NsqLookupdHttpClient.GetNodes">
            <summary>Returns a list of all known nsqd nodes.</summary>
        </member>
        <member name="M:NsqSharp.Api.NsqLookupdHttpClient.TombstoneTopicProducer(System.String,System.String)">
            <summary>
                Tombstones a specific <paramref name="nsqdNode"/> producer of an existing <paramref name="topic"/>.
                Tombstoning a <paramref name="topic"/>
                prevents clients from discovering the <paramref name="nsqdNode"/> through nsqlookupd for a configurable --
                tombstone-liftime, allowing the <paramref name="nsqdNode"/>
                to delete the topic without it being recreated by connecting clients.
            </summary>
            <param name="topic">The topic to list producers for.</param>
            <param name="nsqdNode">The nsqd node.</param>
        </member>
        <member name="T:NsqSharp.Api.NsqLookupdTopicsResponse">
            <summary>nsqlookupd response to /topics.</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqLookupdTopicsResponse.Topics">
            <summary>Gets or sets the topics.</summary>
            <value>The topics.</value>
        </member>
        <member name="T:NsqSharp.Api.NsqLookupdNodesResponse">
            <summary>nsqlookupd response from /nodes.</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqLookupdNodesResponse.Producers">
            <summary>Gets or sets the producers.</summary>
            <value>The producers.</value>
        </member>
        <member name="T:NsqSharp.Api.ProducerInformation">
            <summary>nsqlookupd producer list from /nodes.</summary>
        </member>
        <member name="T:NsqSharp.Api.TopicProducerInformation">
            <summary>nsqlookupd producer list from /lookup?topic=[topic_name].</summary>
        </member>
        <member name="P:NsqSharp.Api.TopicProducerInformation.RemoteAddress">
            <summary>Gets or sets the remote address.</summary>
            <value>The remote address.</value>
        </member>
        <member name="P:NsqSharp.Api.TopicProducerInformation.Hostname">
            <summary>Gets or sets the hostname.</summary>
            <value>The hostname.</value>
        </member>
        <member name="P:NsqSharp.Api.TopicProducerInformation.BroadcastAddress">
            <summary>Gets or sets the broadcast address.</summary>
            <value>The broadcast address.</value>
        </member>
        <member name="P:NsqSharp.Api.TopicProducerInformation.TcpPort">
            <summary>Gets or sets the TCP port.</summary>
            <value>The TCP port.</value>
        </member>
        <member name="P:NsqSharp.Api.TopicProducerInformation.HttpPort">
            <summary>Gets or sets the HTTP port.</summary>
            <value>The HTTP port.</value>
        </member>
        <member name="P:NsqSharp.Api.TopicProducerInformation.Version">
            <summary>Gets or sets the nsqd version.</summary>
            <value>The nsqd version.</value>
        </member>
        <member name="P:NsqSharp.Api.ProducerInformation.Tombstones">
            <summary>Gets a value indicating if an entry in <see cref="P:NsqSharp.Api.ProducerInformation.Topics"/> is tombstoned.</summary>
            <value>The tombstones.</value>
        </member>
        <member name="P:NsqSharp.Api.ProducerInformation.Topics">
            <summary>Gets or sets the topics.</summary>
            <value>The topics.</value>
        </member>
        <member name="T:NsqSharp.Api.NsqLookupdLookupResponse">
            <summary>nsqlookupd response from /lookup?topic=[topic_name].</summary>
        </member>
        <member name="P:NsqSharp.Api.NsqLookupdLookupResponse.Producers">
            <summary>Gets or sets the nodes producing the topic.</summary>
            <value>The nodes producing the topic.</value>
        </member>
        <member name="P:NsqSharp.Api.NsqLookupdLookupResponse.Channels">
            <summary>Gets or sets the channels associated with the topic</summary>
            <value>The channels associated with the topic.</value>
        </member>
        <member name="T:NsqSharp.Bus.BusService">
            <summary>
            Static class to start and stop the bus.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.BusService.Start(NsqSharp.Bus.Configuration.BusConfiguration)">
            <summary>Starts the bus service.</summary>
            <remarks>
                Note: This is a blocking call for Console Applications running in interactive mode. This method will block
                until Ctrl+C is pressed and then initiate a clean shutdown.
            </remarks>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="busConfiguration"/> is <c>null</c>.
            </exception>
            <param name="busConfiguration">The bus configuration.</param>
        </member>
        <member name="M:NsqSharp.Bus.BusService.Stop">
            <summary>
                <para>Stops the bus permanently.</para>
                <para>Windows Services - This method is called when the service is stopped or restarted. You do not need to
                call it directly.</para>
                <para>ASP.NET Applications (including Web API and WCF) - May call this method directly if clean exit is a high
                priority. If not called directly it will be called automatically when the hosting enviroment shuts down the
                application (Application Pool stop/restart, Site stop/restart, etc), although the timeout period before a
                forced shutdown is not guaranteed.</para>
                <para>Console Applications - May call this method directly, otherwise it will be called automatically when the
                user presses Ctrl+C.</para>
                <para>Windows Forms/WPF Applications - May call this method directly if clean exit is necessary, otherwise it
                will be called with a short timeout (~3s) when the process exits normally (not force killed).</para>
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.BuiltIn.AutofacObjectBuilder">
            <summary>
            StructureMap object builder. See <see cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/>.
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.IObjectBuilder">
            <summary>
            Object builder interface.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IObjectBuilder.GetInstance``1">
            <summary>
            Creates or finds the registered instance of type <typeparamref name="T"/>.
            </summary>
            <typeparam name="T">The type to resolve.</typeparam>
            <returns>The registered instance of type <typeparamref name="T"/>.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IObjectBuilder.GetInstance(System.Type)">
            <summary>
            Creates or finds the registered instance of the specifid <paramref name="type"/>.
            </summary>
            <param name="type">The type to resolve.</param>
            <returns>The registered instance of the specifid <paramref name="type"/>.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IObjectBuilder.Inject``1(``0)">
            <summary>
            Injects an <paramref name="instance"/> of type <typeparamref name="T"/> into the container.
            </summary>
            <typeparam name="T">The instance type.</typeparam>
            <param name="instance">The instance to inject.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.AutofacObjectBuilder.#ctor(System.Object)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Bus.Configuration.BuiltIn.AutofacObjectBuilder"/> class.
            See <see cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/>.
            </summary>
            <param name="container">Autofac IContainer (result of containerBuilder.Build)</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.AutofacObjectBuilder.GetInstance``1">
            <summary>
            Creates or finds the registered instance of type <typeparamref name="T"/>.
            </summary>
            <typeparam name="T">The type to resolve.</typeparam>
            <returns>The registered instance of type <typeparamref name="T"/>.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.AutofacObjectBuilder.GetInstance(System.Type)">
            <summary>
            Creates or finds the registered instance of the specifid <paramref name="type"/>.
            </summary>
            <param name="type">The type to resolve.</param>
            <returns>The registered instance of the specifid <paramref name="type"/>.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.AutofacObjectBuilder.Inject``1(``0)">
            <summary>
            Injects an <paramref name="instance"/> of type <typeparamref name="T"/> into the container.
            </summary>
            <typeparam name="T">The instance type.</typeparam>
            <param name="instance">The instance to inject.</param>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.BuiltIn.ConsoleMessageAuditor">
            <summary>
            Convenience class for writing exceptions to the console. In Production a more robust auditing implementation
            should be used. See the PointOfSale example for an implementation which uses NLog and SQL Server.
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.Logging.IMessageAuditor">
            <summary>
            Implement <see cref="T:NsqSharp.Bus.Logging.IMessageAuditor"/> to handle auditing of started, succeeded, and failed messages.
            <seealso cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/>.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Logging.IMessageAuditor.OnReceived(NsqSharp.Bus.IBus,NsqSharp.Bus.Logging.IMessageInformation)">
            <summary>
            Occurs when a message is received.
            </summary>
            <param name="bus">The bus.</param>
            <param name="info">Message information including the topic, channel, and raw message.</param>
        </member>
        <member name="M:NsqSharp.Bus.Logging.IMessageAuditor.OnSucceeded(NsqSharp.Bus.IBus,NsqSharp.Bus.Logging.IMessageInformation)">
            <summary>
            Occurs when a message handler succeeds.
            </summary>
            <param name="bus">The bus.</param>
            <param name="info">Message information including the topic, channel, and raw message.</param>
        </member>
        <member name="M:NsqSharp.Bus.Logging.IMessageAuditor.OnFailed(NsqSharp.Bus.IBus,NsqSharp.Bus.Logging.IFailedMessageInformation)">
            <summary>
            Occurs when a message handler fails.
            </summary>
            <param name="bus">The bus.</param>
            <param name="failedInfo">Message information including the topic, channel, and raw message.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.ConsoleMessageAuditor.OnReceived(NsqSharp.Bus.IBus,NsqSharp.Bus.Logging.IMessageInformation)">
            <summary>
            Occurs when a message is received.
            </summary>
            <param name="bus">The bus.</param>
            <param name="info">Message information including the topic, channel, and raw message.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.ConsoleMessageAuditor.OnSucceeded(NsqSharp.Bus.IBus,NsqSharp.Bus.Logging.IMessageInformation)">
            <summary>
            Occurs when a message handler succeeds.
            </summary>
            <param name="bus">The bus.</param>
            <param name="info">Message information including the topic, channel, and raw message.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.ConsoleMessageAuditor.OnFailed(NsqSharp.Bus.IBus,NsqSharp.Bus.Logging.IFailedMessageInformation)">
            <summary>
            Occurs when a message handler fails.
            </summary>
            <param name="bus">The bus.</param>
            <param name="failedInfo">Message information including the topic, channel, and raw message.</param>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.BuiltIn.HandlerTypeToChannelDictionary">
            <summary>
            Convenience class implementing <see cref="T:NsqSharp.Bus.Configuration.Providers.IHandlerTypeToChannelProvider"/> with a
            <see cref="T:System.Collections.Generic.Dictionary`2"/>.
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.Providers.IHandlerTypeToChannelProvider">
            <summary>
            Implement <see cref="T:NsqSharp.Bus.Configuration.Providers.IHandlerTypeToChannelProvider"/> to specify which channel a message handler should
            consume/subscribe to.
            See <see cref="T:NsqSharp.Bus.IHandleMessages`1"/>, <see cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/>,
            and <see cref="T:NsqSharp.Bus.Configuration.Providers.IMessageTypeToTopicProvider"/>.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.Providers.IHandlerTypeToChannelProvider.GetChannel(System.Type)">
            <summary>
            Gets the channel the specified <paramref name="handlerType"/> should consume/subscribe to.
            </summary>
            <param name="handlerType">The message handler type. See <see cref="T:NsqSharp.Bus.IHandleMessages`1"/>.</param>
            <returns>The channel the specified <paramref name="handlerType"/> should consume/subscribe to.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.Providers.IHandlerTypeToChannelProvider.GetHandlerTypes">
            <summary>
            Gets the registered handler types implementing <see cref="T:NsqSharp.Bus.IHandleMessages`1"/>.
            </summary>
            <returns>The registered handler types implementing <see cref="T:NsqSharp.Bus.IHandleMessages`1"/>.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.HandlerTypeToChannelDictionary.#ctor(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.Type,System.String}})">
            <summary>
            Initializes a new isntance of the <see cref="T:NsqSharp.Bus.Configuration.BuiltIn.HandlerTypeToChannelDictionary"/> class.
            </summary>
            <param name="handlerChannels">The dictionary of message types to topic names, where Key = handler type,
            Value = channel name.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.HandlerTypeToChannelDictionary.GetChannel(System.Type)">
            <summary>
            Gets the channel the specified <paramref name="handlerType"/> should consume/subscribe to.
            </summary>
            <param name="handlerType">The message handler type. See <see cref="T:NsqSharp.Bus.IHandleMessages`1"/>.</param>
            <returns>The channel the specified <paramref name="handlerType"/> should consume/subscribe to.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.HandlerTypeToChannelDictionary.GetHandlerTypes">
            <summary>
            Gets the registered handler types implementing <see cref="T:NsqSharp.Bus.IHandleMessages`1"/>.
            </summary>
            <returns>The registered handler types implementing <see cref="T:NsqSharp.Bus.IHandleMessages`1"/>.</returns>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.BuiltIn.MessageTypeToTopicDictionary">
            <summary>
            Convenience class implementing <see cref="T:NsqSharp.Bus.Configuration.Providers.IMessageTypeToTopicProvider"/> with a
            <see cref="T:System.Collections.Generic.Dictionary`2"/>.
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.Providers.IMessageTypeToTopicProvider">
            <summary>
            Implement <see cref="T:NsqSharp.Bus.Configuration.Providers.IMessageTypeToTopicProvider"/> to specify which topic a message type should be
            produced/published on.
            See <see cref="T:NsqSharp.Bus.IHandleMessages`1"/>, <see cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/>,
            and <see cref="T:NsqSharp.Bus.Configuration.Providers.IHandlerTypeToChannelProvider"/>.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.Providers.IMessageTypeToTopicProvider.GetTopic(System.Type)">
            <summary>
            Gets the topic the specified <paramref name="messageType"/> should be produced/published on.
            </summary>
            <param name="messageType">The message type. See <see cref="T:NsqSharp.Bus.IHandleMessages`1"/>.</param>
            <returns>The topic the specified <paramref name="messageType"/> should be produced/published on.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.MessageTypeToTopicDictionary.#ctor(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.Type,System.String}})">
            <summary>
            Initializes a new isntance of the <see cref="T:NsqSharp.Bus.Configuration.BuiltIn.MessageTypeToTopicDictionary"/> class.
            </summary>
            <param name="messageTopics">The dictionary of message types to topic names, where Key = message type,
            Value = topic name.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.MessageTypeToTopicDictionary.GetTopic(System.Type)">
            <summary>
            Gets the topic the specified <paramref name="messageType"/> should be produced/published on.
            </summary>
            <param name="messageType">The message type. See <see cref="T:NsqSharp.Bus.IHandleMessages`1"/>.</param>
            <returns>The topic the specified <paramref name="messageType"/> should be produced/published on.</returns>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.BuiltIn.NewtonsoftJsonSerializer">
            <summary>
            Convenience class for creating a Newtonsoft.Json message serializer. See <see cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/>.
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.IMessageSerializer">
            <summary>
            Message serializer interface.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IMessageSerializer.Serialize(System.Object)">
            <summary>
            Serializes the specified <paramref name="value"/> to a byte array.
            </summary>
            <param name="value">The value to serialize.</param>
            <returns>The serialized value.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IMessageSerializer.Deserialize(System.Type,System.Byte[])">
            <summary>
            Deserializes the specified <paramref name="value"/> to an object of type <paramref name="type" />.
            </summary>
            <param name="type">The type of the deserialized object.</param>
            <param name="value">The value to deserialize.</param>
            <returns>The deserialized object.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.NewtonsoftJsonSerializer.#ctor(System.Reflection.Assembly)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Bus.Configuration.BuiltIn.NewtonsoftJsonSerializer"/> class. See <see cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/>.
            </summary>
            <param name="newtonsoftJsonAssembly">The Newtonsoft.Json assembly; typically typeof(JsonConvert).Assembly.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.NewtonsoftJsonSerializer.Serialize(System.Object)">
            <summary>
            Serializes the specified <paramref name="value"/> to a byte array.
            </summary>
            <param name="value">The value to serialize.</param>
            <returns>The serialized value.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.NewtonsoftJsonSerializer.Deserialize(System.Type,System.Byte[])">
            <summary>
            Deserializes the specified <paramref name="value"/> to an object of type <paramref name="type" />.
            </summary>
            <param name="type">The type of the deserialized object.</param>
            <param name="value">The value to deserialize.</param>
            <returns>The deserialized object.</returns>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.BuiltIn.NsqdHttpPublisher">
            <summary>NSQD HTTP publisher.</summary>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.INsqdPublisher">
            <summary>Interface for an NSQD publisher.</summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.INsqdPublisher.Publish(System.String,System.Byte[])">
            <summary>Publishes a <paramref name="message"/> on the specified <paramref name="topic"/>.</summary>
            <param name="topic">The topic.</param>
            <param name="message">The message.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.INsqdPublisher.MultiPublish(System.String,System.Collections.Generic.IEnumerable{System.Byte[]})">
            <summary>Multi-Publishes <paramref name="messages"/> on the specified <paramref name="topic"/>.</summary>
            <param name="topic">The topic.</param>
            <param name="messages">The messages.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.INsqdPublisher.Stop">
            <summary>Stops the nsqd publisher.</summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.NsqdHttpPublisher.#ctor(System.String,System.TimeSpan)">
            <summary>Initializes a new instance of the <see cref="T:NsqSharp.Bus.Configuration.BuiltIn.NsqdHttpPublisher"/> class.</summary>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="nsqdHttpEndpoint"/> is null or empty.
            </exception>
            <param name="nsqdHttpEndpoint">The nsqd HTTP endpoint.</param>
            <param name="httpRequestTimeout">The HTTP request timeout.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.NsqdHttpPublisher.Publish(System.String,System.Byte[])">
            <summary>Publishes a <paramref name="message"/> on the specified <paramref name="topic"/>.</summary>
            <param name="topic">The topic.</param>
            <param name="message">The message.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.NsqdHttpPublisher.MultiPublish(System.String,System.Collections.Generic.IEnumerable{System.Byte[]})">
            <summary>Multi-Publishes <paramref name="messages"/> on the specified <paramref name="topic"/>.</summary>
            <param name="topic">The topic.</param>
            <param name="messages">The messages.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.NsqdHttpPublisher.Stop">
            <summary>Stops the nsqd publisher.</summary>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.BuiltIn.NsqdTcpPublisher">
            <summary>NSQD TCP publisher.</summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.NsqdTcpPublisher.#ctor(System.String,NsqSharp.Core.ILogger,NsqSharp.Config)">
            <summary>
                Initializes a new instance of the NsqSharp.Bus.Configuration.BuiltIn.NsqdTcpPublisher class.
            </summary>
            <exception cref="T:System.ArgumentNullException">Thrown when one or more required arguments are null.</exception>
            <param name="nsqdAddress">The nsqd address.</param>
            <param name="logger">The logger.</param>
            <param name="config">The configuration.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.NsqdTcpPublisher.Publish(System.String,System.Byte[])">
            <summary>Publishes a <paramref name="message"/> on the specified <paramref name="topic"/>.</summary>
            <param name="topic">The topic.</param>
            <param name="message">The message.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.NsqdTcpPublisher.MultiPublish(System.String,System.Collections.Generic.IEnumerable{System.Byte[]})">
            <summary>Multi-Publishes <paramref name="messages"/> on the specified <paramref name="topic"/>.</summary>
            <param name="topic">The topic.</param>
            <param name="messages">The messages.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.NsqdTcpPublisher.Stop">
            <summary>Stops the nsqd publisher.</summary>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.BuiltIn.StructureMapObjectBuilder">
            <summary>
            StructureMap object builder. See <see cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/>.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.StructureMapObjectBuilder.#ctor(System.Object)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Bus.Configuration.BuiltIn.StructureMapObjectBuilder"/> class.
            See <see cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/>.
            </summary>
            <param name="objectFactoryContainer">StructureMap ObjectFactory.Container</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.StructureMapObjectBuilder.GetInstance``1">
            <summary>
            Creates or finds the registered instance of type <typeparamref name="T"/>.
            </summary>
            <typeparam name="T">The type to resolve.</typeparam>
            <returns>The registered instance of type <typeparamref name="T"/>.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.StructureMapObjectBuilder.GetInstance(System.Type)">
            <summary>
            Creates or finds the registered instance of the specifid <paramref name="type"/>.
            </summary>
            <param name="type">The type to resolve.</param>
            <returns>The registered instance of the specifid <paramref name="type"/>.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BuiltIn.StructureMapObjectBuilder.Inject``1(``0)">
            <summary>
            Injects an <paramref name="instance"/> of type <typeparamref name="T"/> into the container.
            </summary>
            <typeparam name="T">The instance type.</typeparam>
            <param name="instance">The instance to inject.</param>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.BusConfiguration">
            <summary>
            Configure and start a new Bus.
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.IBusConfiguration">
            <summary>
            Bus configuration.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IBusConfiguration.GetHandledTopics">
            <summary>
            Gets a list of topics/channels currently handled by this process.
            </summary>
            <returns>A list of topics/channels currently handled by this process.</returns>
        </member>
        <member name="P:NsqSharp.Bus.Configuration.IBusConfiguration.IsConsoleMode">
            <summary>
            <c>true</c> if the process is running in a console window.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BusConfiguration.#ctor(NsqSharp.Bus.Configuration.IObjectBuilder,NsqSharp.Bus.Configuration.IMessageSerializer,NsqSharp.Bus.Logging.IMessageAuditor,NsqSharp.Bus.Configuration.Providers.IMessageTypeToTopicProvider,NsqSharp.Bus.Configuration.Providers.IHandlerTypeToChannelProvider,System.String[],System.Int32,NsqSharp.Config,NsqSharp.Bus.Configuration.IBusStateChangedHandler,NsqSharp.Core.ILogger,System.Boolean,NsqSharp.Bus.Configuration.IMessageMutator,NsqSharp.Bus.Configuration.IMessageTopicRouter,NsqSharp.Bus.Configuration.INsqdPublisher,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/> class.
            </summary>
            <param name="dependencyInjectionContainer">The DI container to use for this bus (required). See
            <see cref="T:NsqSharp.Bus.Configuration.BuiltIn.StructureMapObjectBuilder"/> for a default implementation.</param>
            <param name="defaultMessageSerializer">The default message serializer/deserializer. See
            <see cref="T:NsqSharp.Bus.Configuration.BuiltIn.NewtonsoftJsonSerializer"/> for a default implementation.</param>
            <param name="messageAuditor">The handler to call when a message fails to process.</param>
            <param name="messageTypeToTopicProvider">The message type to topic provider.</param>
            <param name="handlerTypeToChannelProvider">The handler type to channel provider.</param>
            <param name="defaultNsqLookupdHttpEndpoints">The default nsqlookupd HTTP endpoints; typically listening
            on port 4161.</param>
            <param name="defaultThreadsPerHandler">The default number of threads per message handler.</param>
            <param name="nsqConfig">The NSQ <see cref="T:NsqSharp.Config"/> (optional).</param>
            <param name="busStateChangedHandler">Handle bus start and stop events (optional).</param>
            <param name="nsqLogger">The <see cref="T:NsqSharp.Core.ILogger"/> used by NsqSharp when communicating with nsqd/nsqlookupd.
            (default = <see cref="T:NsqSharp.Utils.Loggers.TraceLogger"/>).</param>
            <param name="preCreateTopicsAndChannels">Set to <c>true</c> to pre-create all registered topics and channels
            on the local nsqd instance listening on 127.0.0.1:4151; useful for self-contained clusters (default =
            <c>false</c>).</param>
            <param name="messageMutator">The message mutator used to modify a message before it's sent (optional).</param>
            <param name="messageTopicRouter">The message router used to specify custom message-to-topic routing logic; used
            to override <paramref name="messageTypeToTopicProvider"/> (optional).</param>
            <param name="nsqdPublisher">The implementation responsible for handling <see cref="M:IBus.Send"/> calls (optional;
            default = <see cref="T:NsqSharp.Bus.Configuration.BuiltIn.NsqdTcpPublisher"/> using 127.0.0.1:4150 and the specified <paramref name="nsqLogger"/>
            and <paramref name="nsqConfig"/>).</param>
            <param name="logOnProcessCrash"><c>true</c> to log <see cref="E:AppDomain.CurrentDomain.UnhandledException"/> using
            <paramref name="nsqLogger"/> (default = <c>true</c>).
            </param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BusConfiguration.AddMessageHandlers(System.Collections.Generic.IEnumerable{System.Type})">
            <summary>
            Add message handlers from the specified list of <paramref name="handlerTypes"/>.
            Uses defaults specified in the <see cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/> constructor.
            </summary>
            <param name="handlerTypes">The message handler types to add. Throws if a type is an invalid message handler.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BusConfiguration.AddMessageHandler``2(System.String,System.String,NsqSharp.Bus.Configuration.IMessageSerializer,NsqSharp.Config,System.Nullable{System.Int32},System.String[])">
            <summary>
            Adds a message handler. If a duplicate <paramref name="topic"/>, <paramref name="channel"/>, and
            <typeparamref name="THandler"/> is added the old value will be overwritten.
            </summary>
            <typeparam name="THandler">The concrete message handler type.</typeparam>
            <typeparam name="TMessage">The message type.</typeparam>
            <param name="topic">The topic name.</param>
            <param name="channel">The channel name.</param>
            <param name="messageSerializer">The message serializer (optional; otherwise uses default).</param>
            <param name="config">The Consumer <see cref="T:NsqSharp.Config"/> to use (optional; otherwise uses default).</param>
            <param name="threadsPerHandler">The number of threads per message handler (optional; otherwise uses default).</param>
            <param name="nsqLookupdHttpAddresses">The nsqlookupd HTTP addresses to use (optional; otherwise uses default).</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.BusConfiguration.GetHandledTopics">
            <summary>
            Gets a list of topics/channels currently handled by this process.
            </summary>
            <returns>A list of topics/channels currently handled by this process.</returns>
        </member>
        <member name="P:NsqSharp.Bus.Configuration.BusConfiguration.IsConsoleMode">
            <summary>
            <c>true</c> if the process is running in a console window.
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.IBusStateChangedHandler">
            <summary>
            Implement <see cref="T:NsqSharp.Bus.Configuration.IBusStateChangedHandler"/> to act before and after the bus starts and stops.
            See <see cref="T:NsqSharp.Bus.Configuration.BusConfiguration"/>.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IBusStateChangedHandler.OnBusStarting(NsqSharp.Bus.Configuration.IBusConfiguration)">
            <summary>
            Occurs before the bus starts.
            If an exception is thrown in this method the bus will not start.
            </summary>
            <param name="config">The bus configuration.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IBusStateChangedHandler.OnBusStarted(NsqSharp.Bus.Configuration.IBusConfiguration,NsqSharp.Bus.IBus)">
            <summary>
            Occurs after the bus starts.
            </summary>
            <param name="config">The bus configuration.</param>
            <param name="bus">The bus.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IBusStateChangedHandler.OnBusStopping(NsqSharp.Bus.Configuration.IBusConfiguration,NsqSharp.Bus.IBus)">
            <summary>
            Occurs before the bus stops.
            If an exception is thrown in this method the bus will not stop.
            </summary>
            <param name="config">The bus configuration.</param>
            <param name="bus">The bus.</param>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IBusStateChangedHandler.OnBusStopped(NsqSharp.Bus.Configuration.IBusConfiguration)">
            <summary>
            Occurs after the bus stops.
            </summary>
            <param name="config">The bus configuration.</param>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.IMessageMutator">
            <summary>
            Implement this interface to modify a message before it is sent.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IMessageMutator.GetMutatedMessage``1(NsqSharp.Bus.IBus,``0)">
            <summary>
            Gets a mutated message before it is sent.
            </summary>
            <typeparam name="T">The message type.</typeparam>
            <param name="bus">The bus sending this message.</param>
            <param name="sentMessage">The message about to be sent.</param>
            <returns>The mutated message.</returns>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.IMessageTopicRouter">
            <summary>
            Implement this interface to specify custom message-to-topic routing logic based on a message object about to be sent.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IMessageTopicRouter.GetMessageTopic``1(NsqSharp.Bus.IBus,System.String,``0)">
            <summary>
            Gets the topic a message should be sent on.
            </summary>
            <typeparam name="T">The message type.</typeparam>
            <param name="bus">The bus sending this message.</param>
            <param name="originalTopic">The original topic name as provided by the implementation
            of <see cref="T:NsqSharp.Bus.Configuration.Providers.IMessageTypeToTopicProvider"/> passed to this bus.</param>
            <param name="sentMessage">The message about to be sent.</param>
            <returns>The topic to send this message on.</returns>
        </member>
        <member name="M:NsqSharp.Bus.Configuration.IMessageTopicRouter.GetTopics(System.Type)">
            <summary>
            Gets the topics a specified <paramref name="messageType"/> can be produced/published on based on
            the implementation of <see cref="M:NsqSharp.Bus.Configuration.IMessageTopicRouter.GetMessageTopic``1(NsqSharp.Bus.IBus,System.String,``0)"/>.
            </summary>
            <param name="messageType">The message type. See <see cref="T:NsqSharp.Bus.IHandleMessages`1"/>.</param>
            <returns>The topics the specified <paramref name="messageType"/> can be produced/published on based on
            the implementation of <see cref="M:NsqSharp.Bus.Configuration.IMessageTopicRouter.GetMessageTopic``1(NsqSharp.Bus.IBus,System.String,``0)"/>.</returns>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.ITopicChannels">
            <summary>
            Topic and channel information for the current process.
            </summary>
        </member>
        <member name="P:NsqSharp.Bus.Configuration.ITopicChannels.Topic">
            <summary>
            The topic name.
            </summary>
        </member>
        <member name="P:NsqSharp.Bus.Configuration.ITopicChannels.Channels">
            <summary>
            The topic channels handled by this process.
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.Configuration.TopicChannels">
            <summary>
            Topic and channel information for the current process.
            </summary>
        </member>
        <member name="P:NsqSharp.Bus.Configuration.TopicChannels.Topic">
            <summary>
            The topic name.
            </summary>
        </member>
        <member name="P:NsqSharp.Bus.Configuration.TopicChannels.Channels">
            <summary>
            The topic channels handled by this process.
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.ICurrentMessageInformation">
            <summary>
            Information about the message being handled.
            </summary>
        </member>
        <member name="P:NsqSharp.Bus.ICurrentMessageInformation.UniqueIdentifier">
            <summary>A unique identifier for this instance of handling this message generated by NsqSharp.</summary>
        </member>
        <member name="P:NsqSharp.Bus.ICurrentMessageInformation.Topic">
            <summary>The topic the message was delivered on.</summary>
        </member>
        <member name="P:NsqSharp.Bus.ICurrentMessageInformation.Channel">
            <summary>The channel the message was delivered on.</summary>
        </member>
        <member name="P:NsqSharp.Bus.ICurrentMessageInformation.Message">
            <summary>The message.</summary>
        </member>
        <member name="P:NsqSharp.Bus.ICurrentMessageInformation.DeserializedMessageBody">
            <summary>The deserialized message body (can be <c>null</c>).</summary>
        </member>
        <member name="T:NsqSharp.Bus.HandlerConfigurationException">
            <summary>
            Thrown when a message handler configuration is invalid.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.HandlerConfigurationException.#ctor(System.String)">
            <summary>Initializes a new instance of the <see cref="T:NsqSharp.Bus.HandlerConfigurationException"/> class.</summary>
            <param name="message">The exception message.</param>
        </member>
        <member name="M:NsqSharp.Bus.HandlerConfigurationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Bus.HandlerConfigurationException"/> class with serialized data.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about
            the exception being thrown.</param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about
            the source or destination.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null.</exception>
            <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/>
            is zero (0).</exception>
        </member>
        <member name="T:NsqSharp.Bus.IBus">
            <summary>
            IBus interface.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.IBus.Send``1(``0)">
            <summary>
            Sends a message of type <typeparamref name="T"/> on the configured topic.
            </summary>
            <typeparam name="T">The message type.</typeparam>
            <param name="message">The message.</param>
        </member>
        <member name="M:NsqSharp.Bus.IBus.Send``1">
            <summary>
            Sends an empty message of type <typeparamref name="T"/> on the configured topic.
            </summary>
            <typeparam name="T">The message type (can be an interface).</typeparam>
        </member>
        <member name="M:NsqSharp.Bus.IBus.Send``1(System.Action{``0})">
            <summary>
            Sends a message of type <typeparamref name="T"/> on the configured topic, using
            <paramref name="messageConstructor"/> to populate the message.
            </summary>
            <typeparam name="T">The message type (can be an interface).</typeparam>
            <param name="messageConstructor">The method used to populate the object.</param>
        </member>
        <member name="M:NsqSharp.Bus.IBus.SendMulti``1(System.Collections.Generic.IEnumerable{``0})">
            <summary>
            Sends messages of type <typeparamref name="T"/> on the configured topic.
            More efficient than calling <see cref="M:NsqSharp.Bus.IBus.Send``1(``0)"/>.
            </summary>
            <typeparam name="T">The message type.</typeparam>
            <param name="messages">The messages.</param>
        </member>
        <member name="M:NsqSharp.Bus.IBus.GetCurrentThreadMessageInformation">
            <summary>Gets <see cref="T:NsqSharp.Bus.ICurrentMessageInformation"/> about the current message being processed. Returns
            <c>null</c> if the current thread isn't a thread started to handle a message.</summary>
        </member>
        <member name="M:NsqSharp.Bus.IBus.GetCurrentMessageInformation">
            <summary>Gets <see cref="T:NsqSharp.Bus.ICurrentMessageInformation"/> about the current message being processed. Returns
            <c>null</c> if the current thread isn't a thread started to handle a message.</summary>
        </member>
        <member name="P:NsqSharp.Bus.IBus.CurrentThreadMessage">
            <summary>Gets the current NSQ message being processed. Returns <c>null</c> if the current thread isn't
            a thread started to handle a message.</summary>
        </member>
        <member name="P:NsqSharp.Bus.IBus.CurrentMessage">
            <summary>Gets the current NSQ message being processed. Returns <c>null</c> if the current thread isn't
            a thread started to handle a message.</summary>
        </member>
        <member name="T:NsqSharp.Bus.IHandleMessages`1">
            <summary>
            Implement to register a class as a message handler.
            </summary>
            <typeparam name="T">The message type.</typeparam>
        </member>
        <member name="M:NsqSharp.Bus.IHandleMessages`1.Handle(`0)">
            <summary>
            Handles a message.
            </summary>
            <param name="message">The message to handle.</param>
        </member>
        <member name="T:NsqSharp.Bus.Logging.FailedMessageQueueAction">
            <summary>
            The queue action taken for the failed message.
            </summary>
        </member>
        <member name="F:NsqSharp.Bus.Logging.FailedMessageQueueAction.Requeue">
            <summary>
            Message was requeued.
            </summary>
        </member>
        <member name="F:NsqSharp.Bus.Logging.FailedMessageQueueAction.Finish">
            <summary>
            Message was failed permanently.
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.Logging.FailedMessageReason">
            <summary>
            The category of mesage failure.
            </summary>
        </member>
        <member name="F:NsqSharp.Bus.Logging.FailedMessageReason.HandlerConstructor">
            <summary>
            The dependency injection container failed to build the object or the handler constructor threw an exception.
            </summary>
        </member>
        <member name="F:NsqSharp.Bus.Logging.FailedMessageReason.MessageDeserialization">
            <summary>
            The <see cref="P:NsqSharp.Message.Body"/> failed to deserialize.
            </summary>
        </member>
        <member name="F:NsqSharp.Bus.Logging.FailedMessageReason.HandlerException">
            <summary>
            The <see cref="M:NsqSharp.Bus.IHandleMessages`1.Handle(`0)"/> implementation threw an exception.
            </summary>
        </member>
        <member name="F:NsqSharp.Bus.Logging.FailedMessageReason.MaxAttemptsExceeded">
            <summary>
            The maximum number of attempts was exceeded.
            </summary>
        </member>
        <member name="T:NsqSharp.Bus.Logging.IMessageInformation">
            <summary>
            Message information including topic, channel, handler type, message type, raw NSQ message, and deserialized message.
            <seealso cref="T:NsqSharp.Bus.Logging.IMessageAuditor"/>
            </summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IMessageInformation.UniqueIdentifier">
            <summary>A unique identifier for this instance of handling this message generated by NsqSharp.</summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IMessageInformation.Topic">
            <summary>The topic the message was delivered on.</summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IMessageInformation.Channel">
            <summary>The channel the message was delivered on.</summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IMessageInformation.HandlerType">
            <summary>The handler .NET type.</summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IMessageInformation.MessageType">
            <summary>The message .NET type.</summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IMessageInformation.Message">
            <summary>The message.</summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IMessageInformation.DeserializedMessageBody">
            <summary>The deserialized message body (can be <c>null</c>).</summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IMessageInformation.Started">
            <summary>The <see cref="T:System.DateTime"/> the handler started processing this message.</summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IMessageInformation.Finished">
            <summary>The <see cref="T:System.DateTime"/> the handler finished processing this message (can be <c>null</c>).</summary>
        </member>
        <member name="T:NsqSharp.Bus.Logging.IFailedMessageInformation">
            <summary>
            Failed message information. In addition to properties provided by <see cref="T:NsqSharp.Bus.Logging.IMessageInformation"/> the following are
            added: <see cref="P:NsqSharp.Bus.Logging.IFailedMessageInformation.FailedAction"/>, <see cref="P:NsqSharp.Bus.Logging.IFailedMessageInformation.FailedReason"/>, <see cref="P:NsqSharp.Bus.Logging.IFailedMessageInformation.Exception"/>.
            <seealso cref="T:NsqSharp.Bus.Logging.IMessageAuditor"/>
            <seealso cref="T:NsqSharp.Bus.Logging.IMessageInformation"/>
            </summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IFailedMessageInformation.FailedAction">
            <summary>The queue action taken for the failed message.</summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IFailedMessageInformation.FailedReason">
            <summary>The category of mesage failure.</summary>
        </member>
        <member name="P:NsqSharp.Bus.Logging.IFailedMessageInformation.Exception">
            <summary>The exception (can be <c>null</c>).</summary>
        </member>
        <member name="T:NsqSharp.IHandler">
            <summary>
                <para>Message processing interface for <see cref="T:NsqSharp.Consumer"/>.</para>
                <para>When the <see cref="M:NsqSharp.IHandler.HandleMessage(NsqSharp.IMessage)"/> method returns the <see cref="T:NsqSharp.Consumer"/> will automatically handle
                FIN'ing the message.</para>
                <para>When an exception is thrown the <see cref="T:NsqSharp.Consumer"/> will automatically handle REQ'ing the message.</para>
            </summary>
            <seealso cref="M:NsqSharp.Consumer.AddHandler(NsqSharp.IHandler,System.Int32)"/>
        </member>
        <member name="M:NsqSharp.IHandler.HandleMessage(NsqSharp.IMessage)">
            <summary>Handles a message.</summary>
            <param name="message">The message.</param>
        </member>
        <member name="M:NsqSharp.IHandler.LogFailedMessage(NsqSharp.IMessage)">
            <summary>
                Called when a <see cref="T:NsqSharp.Message"/> has exceeded the <see cref="T:NsqSharp.Consumer"/> specified
                <see cref="P:NsqSharp.Config.MaxAttempts"/>.
            </summary>
            <param name="message">The failed message.</param>
        </member>
        <member name="T:NsqSharp.Bus.Utils.InterfaceBuilder">
            <summary>
            Create a concrete type based on an interface.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Utils.InterfaceBuilder.CreateObject``1">
            <summary>
            Create a concrete object based on an interface.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Utils.InterfaceBuilder.CreateObject(System.Type)">
            <summary>
            Create a concrete object based on an interface.
            </summary>
        </member>
        <member name="M:NsqSharp.Bus.Utils.InterfaceBuilder.CreateType(System.Type)">
            <summary>
            Create a concrete type based on an interface.
            </summary>
        </member>
        <member name="T:NsqSharp.IDiscoveryFilter">
            <summary>
                <see cref="T:NsqSharp.IDiscoveryFilter"/> is accepted by <see cref="M:NsqSharp.Consumer.SetBehaviorDelegate(NsqSharp.IDiscoveryFilter)"/>
                for filtering the nsqd addresses returned from nsqlookupd.
            </summary>
        </member>
        <member name="M:NsqSharp.IDiscoveryFilter.Filter(System.Collections.Generic.IEnumerable{System.String})">
            <summary>Filters a list of nsqd addresses.</summary>
            <param name="nsqds">nsqd addresses returned by nsqlookupd.</param>
            <returns>The filtered list of nsqd addresses to use.</returns>
        </member>
        <member name="T:NsqSharp.ConsumerStats">
            <summary>
                <see cref="T:NsqSharp.ConsumerStats"/> represents a snapshot of the state of a <see cref="T:NsqSharp.Consumer"/>'s connections and the
                messages it has seen.
            </summary>
        </member>
        <member name="P:NsqSharp.ConsumerStats.MessagesReceived">
            <summary>The number of messages received.</summary>
            <value>The number of messages received.</value>
        </member>
        <member name="P:NsqSharp.ConsumerStats.MessagesFinished">
            <summary>The number of messages finished.</summary>
            <value>The number of messages finished.</value>
        </member>
        <member name="P:NsqSharp.ConsumerStats.MessagesRequeued">
            <summary>The number of messages requeued.</summary>
            <value>The number of messages requeued.</value>
        </member>
        <member name="P:NsqSharp.ConsumerStats.Connections">
            <summary>The number of nsqd connections.</summary>
            <value>The number of nsqd connections.</value>
        </member>
        <member name="T:NsqSharp.Consumer">
             <summary>
                 <para><see cref="T:NsqSharp.Consumer"/> is a high-level type to consume messages from NSQ.</para>
                 
                 <para>A <see cref="T:NsqSharp.Consumer"/> instance is supplied an <see cref="T:NsqSharp.IHandler"/> instance to
                 <see cref="M:NsqSharp.Consumer.AddHandler(NsqSharp.IHandler,System.Int32)"/>. The supplied instance will be executed concurrently to process the stream of
                 messages consumed from the specified topic/channel.</para>
                 
                 <para>If configured, it will poll nsqlookupd instances and handle connection (and reconnection) to any discovered
                 nsqds. See <see cref="M:NsqSharp.Consumer.ConnectToNsqLookupd(System.String[])"/>.</para>
             </summary>
             <example>
                 <code>
                 
                 using System;
                 using System.Text;
                 using NsqSharp;
                 
                 class Program
                 {
                     static void Main()  
                     {
                         // To test, run:
                         // nsqd.exe
                         // to_nsq.exe -topic=test-topic-name -nsqd-tcp-address=127.0.0.1:4150
            
                         // Create a new Consumer for each topic/channel
                         var consumer = new Consumer("test-topic-name", "channel-name");
                         consumer.AddHandler(new MessageHandler());
                         consumer.ConnectToNsqd("127.0.0.1:4150"); // nsqd tcp address/port
                         //consumer.ConnectToNsqLookupd("127.0.0.1:4161"); // nsqlookupd http address/port
                 
                         Console.WriteLine("Listening for messages. Press enter to stop...");
                         Console.ReadLine();
                 
                         consumer.Stop();
                     }
                 }
                 
                 public class MessageHandler : IHandler
                 {
                     // Handles a message.
                     public void HandleMessage(IMessage message)
                     {
                         string msg = Encoding.UTF8.GetString(message.Body);
                         Console.WriteLine(msg);
                     }
                 
                     // Called when a message has exceeded the specified MaxAttempts.
                     public void LogFailedMessage(IMessage message)
                     {
                         // Log failed messages
                     }
                 }
                 </code>
             </example>
             <seealso cref="M:NsqSharp.Consumer.AddHandler(NsqSharp.IHandler,System.Int32)"/>
             <seealso cref="M:NsqSharp.Consumer.ConnectToNsqd(System.String[])"/>
             <seealso cref="M:NsqSharp.Consumer.ConnectToNsqLookupd(System.String[])"/>
             <seealso cref="M:NsqSharp.Consumer.Stop"/>
        </member>
        <member name="T:NsqSharp.Core.IConnDelegate">
            <summary>
            ConnDelegate is an interface of methods that are used as
            callbacks in Conn
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IConnDelegate.OnResponse(NsqSharp.Core.Conn,System.Byte[])">
            <summary>
            OnResponse is called when the connection
            receives a FrameTypeResponse from nsqd
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IConnDelegate.OnError(NsqSharp.Core.Conn,System.Byte[])">
            <summary>
            OnError is called when the connection
            receives a FrameTypeError from nsqd
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IConnDelegate.OnMessage(NsqSharp.Core.Conn,NsqSharp.Message)">
            <summary>
            OnMessage is called when the connection
            receives a FrameTypeMessage from nsqd
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IConnDelegate.OnMessageFinished(NsqSharp.Core.Conn,NsqSharp.Message)">
            <summary>
            OnMessageFinished is called when the connection
            handles a FIN command from a message handler
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IConnDelegate.OnMessageRequeued(NsqSharp.Core.Conn,NsqSharp.Message)">
            <summary>
            OnMessageRequeued is called when the connection
            handles a REQ command from a message handler
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IConnDelegate.OnBackoff(NsqSharp.Core.Conn)">
            <summary>
            OnBackoff is called when the connection triggers a backoff state
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IConnDelegate.OnContinue(NsqSharp.Core.Conn)">
            <summary>
            OnContinue is called when the connection finishes a message without adjusting backoff state
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IConnDelegate.OnResume(NsqSharp.Core.Conn)">
            <summary>
            OnResume is called when the connection triggers a resume state
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IConnDelegate.OnIOError(NsqSharp.Core.Conn,System.Exception)">
            <summary>
            OnIOError is called when the connection experiences
            a low-level TCP transport error
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IConnDelegate.OnHeartbeat(NsqSharp.Core.Conn)">
            <summary>
            OnHeartbeat is called when the connection
            receives a heartbeat from nsqd
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IConnDelegate.OnClose(NsqSharp.Core.Conn)">
            <summary>
            OnClose is called when the connection
            closes, after all cleanup
            </summary>
        </member>
        <member name="M:NsqSharp.Consumer.#ctor(System.String,System.String)">
             <summary>
                 <para>Creates a new instance of <see cref="T:NsqSharp.Consumer"/> for the specified <paramref name="topic"/> and
                 <paramref name="channel"/>.</para>
            
                 <para>Uses the default <see cref="T:NsqSharp.Config"/> and <see cref="T:NsqSharp.Utils.Loggers.ConsoleLogger"/> with log level
                 <see cref="F:LogLevel.Info"/>.</para>
             </summary>
             <exception cref="T:System.ArgumentNullException">Thrown when one or more required arguments are null.</exception>
             <exception cref="T:System.ArgumentException">Thrown when the <paramref name="topic"/> or <paramref name="channel"/>
                 exceed the maximum length or contain invalid characters. Topic and channel names must be greater than 0 and
                 less than or equal to 64 characters longer and must match the pattern "^[\.a-zA-Z0-9_-]+(#ephemeral)?$".
             </exception>
             <remarks>
                 <para>Uses <see cref="T:NsqSharp.Utils.Loggers.ConsoleLogger"/> with <see cref="F:LogLevel.Info"/> to log messages.</para>
                 <para>Uses the default <see cref="T:NsqSharp.Config"/> to configure this <see cref="T:NsqSharp.Consumer"/>.</para>
             </remarks>
             <param name="topic">The topic name.</param>
             <param name="channel">The channel name.</param>
        </member>
        <member name="M:NsqSharp.Consumer.#ctor(System.String,System.String,NsqSharp.Core.ILogger)">
            <summary>
                <para>Creates a new instance of <see cref="T:NsqSharp.Consumer"/> for the specified <paramref name="topic"/> and
                <paramref name="channel"/>, using the specified <paramref name="logger"/>.</para>
                <para>Uses the default <see cref="T:NsqSharp.Config"/>.</para>
            </summary>
            <exception cref="T:System.ArgumentNullException">Thrown when one or more required arguments are null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the <paramref name="topic"/> or <paramref name="channel"/>
                exceed the maximum length or contain invalid characters. Topic and channel names must be greater than 0 and
                less than or equal to 64 characters longer and must match the pattern "^[\.a-zA-Z0-9_-]+(#ephemeral)?$".
            </exception>
            <remarks>Uses the default <see cref="T:NsqSharp.Config"/> to configure this <see cref="T:NsqSharp.Consumer"/>.</remarks>
            <param name="topic">The topic name.</param>
            <param name="channel">The channel name.</param>
            <param name="logger">The <see cref="T:NsqSharp.Core.ILogger"/> instance.</param>
        </member>
        <member name="M:NsqSharp.Consumer.#ctor(System.String,System.String,NsqSharp.Config)">
            <summary>
                <para>Creates a new instance of <see cref="T:NsqSharp.Consumer"/> for the specified <paramref name="topic"/> and
                <paramref name="channel"/>, using the specified <paramref name="config"/>.</para>
                <para>Uses <see cref="T:NsqSharp.Utils.Loggers.ConsoleLogger"/> with log level <see cref="F:LogLevel.Info"/>.</para>
            </summary>
            <exception cref="T:System.ArgumentNullException">Thrown when one or more required arguments are null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the <paramref name="topic"/> or <paramref name="channel"/>
                exceed the maximum length or contain invalid characters. Topic and channel names must be greater than 0 and
                less than or equal to 64 characters longer and must match the pattern "^[\.a-zA-Z0-9_-]+(#ephemeral)?$".
            </exception>
            <remarks>Uses <see cref="T:NsqSharp.Utils.Loggers.ConsoleLogger"/> with <see cref="F:LogLevel.Info"/> to log messages.</remarks>
            <param name="topic">The topic name.</param>
            <param name="channel">The channel name.</param>
            <param name="config">The <see cref="T:NsqSharp.Config"/> settings. After config is passed in the values are no longer mutable
                (they are copied).
            </param>
        </member>
        <member name="M:NsqSharp.Consumer.#ctor(System.String,System.String,NsqSharp.Core.ILogger,NsqSharp.Config)">
            <summary>
                <para>Creates a new instance of <see cref="T:NsqSharp.Consumer"/> for the specified <paramref name="topic"/> and
                <paramref name="channel"/>, using the specified <paramref name="logger"/> and <paramref name="config"/>.</para>
            </summary>
            <exception cref="T:System.ArgumentNullException">Thrown when one or more required arguments are null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the <paramref name="topic"/> or
                <paramref name="channel"/> exceed the maximum length or contain invalid characters. Topic and channel names
                must be greater than 0 and less than or equal to 64 characters longer and must match the pattern "^[\.a-zA-Z0-
                9_-]+(#ephemeral)?$".
            </exception>
            <param name="topic">The topic name.</param>
            <param name="channel">The channel name.</param>
            <param name="logger">The <see cref="T:NsqSharp.Core.ILogger"/> instance.</param>
            <param name="config">The <see cref="T:NsqSharp.Config"/> settings. After config is passed in the values are no longer mutable
                (they are copied).
            </param>
        </member>
        <member name="M:NsqSharp.Consumer.GetStats">
            <summary>
                Retrieves the current connection and message <see cref="T:NsqSharp.ConsumerStats"/> for this <see cref="T:NsqSharp.Consumer"/>.
            </summary>
            <returns>Messages received, messages finished, messages requeued, and number of nsqd connections.</returns>
        </member>
        <member name="M:NsqSharp.Consumer.SetBehaviorDelegate(NsqSharp.IDiscoveryFilter)">
            <summary>
                <see cref="M:NsqSharp.Consumer.SetBehaviorDelegate(NsqSharp.IDiscoveryFilter)"/> takes an <see cref="T:NsqSharp.IDiscoveryFilter"/>
                that can filter the list of nsqd addresses returned by nsqlookupd.
            </summary>
            <param name="discoveryFilter">The discovery filter.</param>
            <seealso cref="M:NsqSharp.Consumer.ConnectToNsqLookupd(System.String[])"/>
        </member>
        <member name="M:NsqSharp.Consumer.perConnMaxInFlight">
             <summary>
             perConnMaxInFlight calculates the per-connection max-in-flight count.
            
             This may change dynamically based on the number of connections to nsqd the Consumer
             is responsible for.
             </summary>
        </member>
        <member name="M:NsqSharp.Consumer.ChangeMaxInFlight(System.Int32)">
            <summary>
                <para>Sets a new maximum number of messages this <see cref="T:NsqSharp.Consumer"/> instance will allow in-flight, and
                updates all existing connections as appropriate.</para>
                
                <para>For example, <see cref="M:NsqSharp.Consumer.ChangeMaxInFlight(System.Int32)"/>(0) would pause message flow.</para>
                
                <para>If already connected, it updates the reader RDY state for each connection.</para>
            </summary>
            <param name="maxInFlight">The maximum number of message to allow in flight.</param>
        </member>
        <member name="M:NsqSharp.Consumer.ConnectToNsqLookupd(System.String[])">
            <summary>
                <para>Adds nsqlookupd addresses to the list for this <see cref="T:NsqSharp.Consumer"/> instance.</para>
                <para>If it is the first to be added, it initiates an HTTP request to discover nsqd
                producers for the configured topic.</para>
                
                <para>A new thread is created to handle continual polling.</para>
            </summary>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="addresses"/> is <c>null</c>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="addresses"/> is empty.
            </exception>
            <param name="addresses">The nsqlookupd address(es) to add.</param>
            <seealso cref="M:NsqSharp.Consumer.DisconnectFromNsqLookupd(System.String)"/>
            <seealso cref="M:NsqSharp.Consumer.ConnectToNsqd(System.String[])"/>
        </member>
        <member name="M:NsqSharp.Consumer.lookupdLoop">
            <summary>
            poll all known lookup servers every LookupdPollInterval
            </summary>
        </member>
        <member name="M:NsqSharp.Consumer.nextLookupdEndpoint">
            <summary>
            return the next lookupd endpoint to query
            keeping track of which one was last used
            </summary>
        </member>
        <member name="M:NsqSharp.Consumer.ConnectToNsqd(System.String[])">
            <summary>
                <para>Adds nsqd addresses to directly connect to for this <see cref="T:NsqSharp.Consumer"/> instance.</para>
                
                <para>It is recommended to use <see cref="M:NsqSharp.Consumer.ConnectToNsqLookupd(System.String[])"/> so that topics are discovered automatically.
                This method is useful when you want to connect to a single, local instance.</para>
            </summary>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="addresses"/> is <c>null</c>.</exception>
            <exception cref="T:System.ArgumentException">Thrown when <paramref name="addresses"/> is empty.</exception>
            <param name="addresses">The nsqd address(es) to add.</param>
            <seealso cref="M:NsqSharp.Consumer.DisconnectFromNsqd(System.String)"/>
            <seealso cref="M:NsqSharp.Consumer.ConnectToNsqLookupd(System.String[])"/>
        </member>
        <member name="M:NsqSharp.Consumer.DisconnectFromNsqd(System.String)">
            <summary>
                Closes the connection to and removes the specified <paramref name="nsqdAddress"/> from the list.
            </summary>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="nsqdAddress"/> is <c>null</c>.</exception>
            <exception cref="T:NsqSharp.Core.ErrNotConnected">Thrown when the specified <paramref name="nsqdAddress"/> is not in the list of
                active connections.
            </exception>
            <param name="nsqdAddress">The nsqd address to disconnect from.</param>
            <seealso cref="M:NsqSharp.Consumer.ConnectToNsqd(System.String[])"/>
        </member>
        <member name="M:NsqSharp.Consumer.DisconnectFromNsqLookupd(System.String)">
            <summary>
                Removes the specified <paramref name="nsqlookupdAddress"/> from the list used for periodic discovery.
            </summary>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="nsqlookupdAddress"/> is <c>null</c>.
            </exception>
            <exception cref="T:NsqSharp.Core.ErrNotConnected">Thrown when the specified <paramref name="nsqlookupdAddress"/> is not in the list
                of current nsqlookupd addresses.
            </exception>
            <exception cref="T:System.Exception">Thrown when the <paramref name="nsqlookupdAddress"/> is the last nsqlookupd in the
                list.
            </exception>
            <param name="nsqlookupdAddress">The nsqlookupd address to remove.</param>
            <seealso cref="M:NsqSharp.Consumer.ConnectToNsqLookupd(System.String[])"/>
        </member>
        <member name="M:NsqSharp.Consumer.Wait">
            <summary>
                Wait for the <see cref="T:NsqSharp.Consumer"/> to stop. Usually used when another thread calls <see cref="M:NsqSharp.Consumer.Stop"/> or
                <see cref="M:NsqSharp.Consumer.StopAsync"/>.
            </summary>
        </member>
        <member name="M:NsqSharp.Consumer.Stop">
            <summary>
                Synchronously initiates a graceful stop of the <see cref="T:NsqSharp.Consumer"/> (permanent) and waits for the stop to
                complete.
            </summary>
        </member>
        <member name="M:NsqSharp.Consumer.StopAsync">
            <summary>Asynchronously initiates a graceful stop of the <see cref="T:NsqSharp.Consumer"/> (permanent).</summary>
            <returns>A <see cref="T:System.Threading.Tasks.Task"/> which can be awaited for the stop to complete.</returns>
        </member>
        <member name="M:NsqSharp.Consumer.AddHandler(NsqSharp.IHandler,System.Int32)">
            <summary>
                <para>Sets the <see cref="T:NsqSharp.IHandler"/> instance to handle for messages received by this
                <see cref="T:NsqSharp.Consumer"/>.</para>
                
                <para>This method throws if called after connecting to nsqd or nsqlookupd.</para>
            </summary>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="handler"/> is <c>null</c>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when <paramref name="threads"/> is less than 1.
            </exception>
            <exception cref="T:System.Exception">
                Thrown when <see cref="M:NsqSharp.Consumer.ConnectToNsqd(System.String[])"/> or <see cref="M:NsqSharp.Consumer.ConnectToNsqLookupd(System.String[])"/> has been called before invoking
                <see cref="M:NsqSharp.Consumer.AddHandler(NsqSharp.IHandler,System.Int32)"/>.
            </exception>
            <param name="handler">The handler for the topic/channel of this <see cref="T:NsqSharp.Consumer"/> instance.</param>
            <param name="threads">The number of threads used to handle incoming messages for this
                <see cref="T:NsqSharp.Consumer"/> (default = 1).
            </param>
        </member>
        <member name="M:NsqSharp.Consumer.addConcurrentHandlers(NsqSharp.IHandler,System.Int32)">
             <summary>
             AddConcurrentHandlers sets the Handler for messages received by this Consumer.  It
             takes a second argument which indicates the number of goroutines to spawn for
             message handling.
            
             This panics if called after connecting to nsqd or nsqlookupd
            
             (see Handler or HandlerFunc for details on implementing this interface)
             </summary>
        </member>
        <member name="P:NsqSharp.Consumer.IsStarved">
            <summary>
                Indicates whether any connections for this <see cref="T:NsqSharp.Consumer"/> are blocked on processing before being able
                to receive more messages (ie. RDY count of 0 and not exiting).
            </summary>
            <value><c>true</c> if this <see cref="T:NsqSharp.Consumer"/> instance is starved; otherwise, <c>false</c>.</value>
        </member>
        <member name="T:NsqSharp.Core.Command">
            <summary>
            Command represents a command from a client to an NSQ daemon
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.#ctor(System.Byte[],System.String,System.String[])">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Core.Command"/> class.
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.#ctor(System.Byte[],System.Byte[],System.String[])">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Core.Command"/> class.
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.#ctor(System.Byte[],System.Byte[],System.Collections.Generic.ICollection{System.Byte[]})">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Core.Command"/> class.
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.ToString">
            <summary>String returns the name and parameters of the Command</summary>
        </member>
        <member name="M:NsqSharp.Core.Command.WriteTo(NsqSharp.Utils.IWriter)">
             <summary>
             WriteTo implements the WriterTo interface and
             serializes the Command to the supplied Writer.
            
             It is suggested that the target Writer is buffered
             to avoid performing many system calls.
             </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.WriteTo(NsqSharp.Utils.IWriter,System.Byte[])">
             <summary>
             WriteTo implements the WriterTo interface and
             serializes the Command to the supplied Writer.
            
             It is suggested that the target Writer is buffered
             to avoid performing many system calls.
             </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.Identify(NsqSharp.Core.IdentifyRequest)">
             <summary>
             Identify creates a new Command to provide information about the client.  After connecting,
             it is generally the first message sent.
            
             The supplied map is marshaled into JSON to provide some flexibility
             for this command to evolve over time.
            
             See http://bitly.github.io/nsq/clients/tcp_protocol_spec.html#identify for information
             on the supported options
             </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.Auth(System.String)">
             <summary>
             Auth sends credentials for authentication
            
             After `Identify`, this is usually the first message sent, if auth is used.
             </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.Register(System.String,System.String)">
            <summary>
            Register creates a new Command to add a topic/channel for the connected nsqd
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.UnRegister(System.String,System.String)">
            <summary>
            UnRegister creates a new Command to remove a topic/channel for the connected nsqd
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.Ping">
            <summary>
            Ping creates a new Command to keep-alive the state of all the
            announced topic/channels for a given client
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.Publish(System.String,System.Byte[])">
            <summary>
            Publish creates a new Command to write a message to a given topic
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.MultiPublish(System.String,System.Collections.Generic.IEnumerable{System.Byte[]})">
            <summary>
            MultiPublish creates a new Command to write more than one message to a given topic.
            This is useful for high-throughput situations to avoid roundtrips and saturate the pipe.
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.Subscribe(System.String,System.String)">
            <summary>
            Subscribe creates a new Command to subscribe to the given topic/channel
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.Ready(System.Int64)">
            <summary>
            Ready creates a new Command to specify
            the number of messages a client is willing to receive
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.Finish(System.Byte[])">
            <summary>
            Finish creates a new Command to indiciate that
            a given message (by id) has been processed successfully
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.Requeue(System.Byte[],System.TimeSpan)">
            <summary>
            Requeue creates a new Command to indicate that
            a given message (by id) should be requeued after the given delay
            NOTE: a delay of 0 indicates immediate requeue
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.Touch(System.Byte[])">
            <summary>
            Touch creates a new Command to reset the timeout for
            a given message (by id)
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.StartClose">
            <summary>
            StartClose creates a new Command to indicate that the
            client would like to start a close cycle.  nsqd will no longer
            send messages to a client in this state and the client is expected
            finish pending messages and close the connection
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Command.Nop">
            <summary>
            Nop creates a new Command that has no effect server side.
            Commonly used to respond to heartbeats
            </summary>
        </member>
        <member name="P:NsqSharp.Core.Command.Name">
            <summary>Name</summary>
        </member>
        <member name="P:NsqSharp.Core.Command.Params">
            <summary>Params</summary>
        </member>
        <member name="P:NsqSharp.Core.Command.Body">
            <summary>Body</summary>
        </member>
        <member name="T:NsqSharp.Core.IdentifyResponse">
            <summary>
            IdentifyResponse represents the metadata
            returned from an IDENTIFY command to nsqd
            </summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyResponse.MaxRdyCount">
            <summary>Max RDY count</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyResponse.TLSv1">
            <summary>Use TLSv1</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyResponse.Deflate">
            <summary>Use Deflate compression</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyResponse.Snappy">
            <summary>Use Snappy compression</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyResponse.AuthRequired">
            <summary>Auth required</summary>
        </member>
        <member name="T:NsqSharp.Core.AuthResponse">
            <summary>
            AuthResponse represents the metadata
            returned from an AUTH command to nsqd
            </summary>
        </member>
        <member name="P:NsqSharp.Core.AuthResponse.Identity">
            <summary>Identity</summary>
        </member>
        <member name="P:NsqSharp.Core.AuthResponse.IdentityUrl">
            <summary>Identity URL</summary>
        </member>
        <member name="P:NsqSharp.Core.AuthResponse.PermissionCount">
            <summary>Permission Count</summary>
        </member>
        <member name="T:NsqSharp.Core.Conn">
             <summary>
             Conn represents a connection to nsqd
            
             Conn exposes a set of callbacks for the
             various events that occur on a connection
             </summary>
        </member>
        <member name="T:NsqSharp.Utils.IReader">
            <summary>
            Reader is the interface that wraps the basic Read method. http://golang.org/pkg/io/#Reader
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.IReader.Read(System.Byte[])">
            <summary>
            Read reads data from the connection.
            </summary>
            <param name="b">The byte array to populate.</param>
            <returns>The number of bytes read.</returns>
        </member>
        <member name="T:NsqSharp.Utils.IWriter">
            <summary>
            Writer is the interface that wraps the basic Write method. http://golang.org/pkg/io/#Writer
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.IWriter.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Write writes data to the connection.
            </summary>
            <returns>The number of bytes written.</returns>
        </member>
        <member name="T:NsqSharp.IConn">
            <summary>
            IConn interface
            </summary>
        </member>
        <member name="M:NsqSharp.IConn.SetLogger(NsqSharp.Core.ILogger,System.String)">
             <summary>
             SetLogger assigns the logger to use as well as a level.
            
             The format parameter is expected to be a printf compatible string with
             a single {0} argument.  This is useful if you want to provide additional
             context to the log messages that the connection will print, the default
             is '({0})'.
             </summary>
        </member>
        <member name="M:NsqSharp.IConn.Connect">
            <summary>
            Connect dials and bootstraps the nsqd connection
            (including IDENTIFY) and returns the IdentifyResponse
            </summary>
        </member>
        <member name="M:NsqSharp.IConn.Close">
            <summary>
            Close idempotently initiates connection close
            </summary>
        </member>
        <member name="M:NsqSharp.IConn.WriteCommand(NsqSharp.Core.Command)">
            <summary>
            WriteCommand is a thread safe method to write a Command
            to this connection, and flush.
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Conn.#ctor(System.String,NsqSharp.Config,NsqSharp.Core.IConnDelegate)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Core.Conn"/> class.
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Conn.SetLogger(NsqSharp.Core.ILogger,System.String)">
             <summary>
             SetLogger assigns the logger to use as well as a level.
            
             The format parameter is expected to be a printf compatible string with
             a single {0} argument.  This is useful if you want to provide additional
             context to the log messages that the connection will print, the default
             is '({0})'.
             </summary>
        </member>
        <member name="M:NsqSharp.Core.Conn.Connect">
            <summary>
            Connect dials and bootstraps the nsqd connection
            (including IDENTIFY) and returns the IdentifyResponse
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Conn.Close">
            <summary>
            Close idempotently initiates connection close
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Conn.SetRDY(System.Int64)">
            <summary>
            SetRDY stores the specified RDY count
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Conn.RemoteAddr">
            <summary>
            RemoteAddr returns the configured destination nsqd address
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Conn.ToString">
            <summary>
            String returns the fully-qualified address
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Conn.Read(System.Byte[])">
            <summary>
            Read performs a deadlined read on the underlying TCP connection
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Conn.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Write performs a deadlined write on the underlying TCP connection
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Conn.WriteCommand(NsqSharp.Core.Command)">
            <summary>
            WriteCommand is a thread safe method to write a Command
            to this connection, and flush.
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Conn.Flush">
            <summary>
            Flush writes all buffered data to the underlying TCP connection
            </summary>
        </member>
        <member name="P:NsqSharp.Core.Conn.IsClosing">
            <summary>
            IsClosing indicates whether or not the
            connection is currently in the processing of
            gracefully closing
            </summary>
        </member>
        <member name="P:NsqSharp.Core.Conn.RDY">
            <summary>
            RDY returns the current RDY count
            </summary>
        </member>
        <member name="P:NsqSharp.Core.Conn.LastRDY">
            <summary>
            LastRDY returns the previously set RDY count
            </summary>
        </member>
        <member name="P:NsqSharp.Core.Conn.MaxRDY">
            <summary>
            MaxRDY returns the nsqd negotiated maximum
            RDY count that it will accept for this connection
            </summary>
        </member>
        <member name="P:NsqSharp.Core.Conn.LastMessageTime">
            <summary>
            LastMessageTime returns a time.Time representing
            the time at which the last message was received
            </summary>
        </member>
        <member name="T:NsqSharp.Core.IdentifyRequest">
            <summary>
            Identify request.
            </summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.client_id">
            <summary>client_id</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.hostname">
            <summary>hostname</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.user_agent">
            <summary>user_agent</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.short_id">
            <summary>short_id (deprecated)</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.long_id">
            <summary>long_id (deprecated)</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.tls_v1">
            <summary>tls_v1</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.deflate">
            <summary>deflate</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.deflate_level">
            <summary>deflate_level</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.snappy">
            <summary>snappy</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.feature_negotiation">
            <summary>feature_negotiation</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.heartbeat_interval">
            <summary>heartbeat_interval</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.sample_rate">
            <summary>sample_rate</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.output_buffer_size">
            <summary>output_buffer_size</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.output_buffer_timeout">
            <summary>output_buffer_timeout</summary>
        </member>
        <member name="P:NsqSharp.Core.IdentifyRequest.msg_timeout">
            <summary>msg_timeout</summary>
        </member>
        <member name="T:NsqSharp.Core.LogLevel">
            <summary>
            LogLevel specifies the severity of a given log message
            </summary>
        </member>
        <member name="F:NsqSharp.Core.LogLevel.Debug">
            <summary>Debug</summary>
        </member>
        <member name="F:NsqSharp.Core.LogLevel.Info">
            <summary>Info</summary>
        </member>
        <member name="F:NsqSharp.Core.LogLevel.Warning">
            <summary>Warning</summary>
        </member>
        <member name="F:NsqSharp.Core.LogLevel.Error">
            <summary>Error</summary>
        </member>
        <member name="F:NsqSharp.Core.LogLevel.Critical">
            <summary>Critical</summary>
        </member>
        <member name="T:NsqSharp.Core.Log">
            <summary>
            Logging constants
            </summary>
        </member>
        <member name="F:NsqSharp.Core.Log.DebugPrefix">
            <summary>LogLevelDebugPrefix</summary>
        </member>
        <member name="F:NsqSharp.Core.Log.InfoPrefix">
            <summary>LogLevelInfoPrefix</summary>
        </member>
        <member name="F:NsqSharp.Core.Log.WarningPrefix">
            <summary>LogLevelWarningPrefix</summary>
        </member>
        <member name="F:NsqSharp.Core.Log.ErrorPrefix">
            <summary>LogLevelErrorPrefix</summary>
        </member>
        <member name="F:NsqSharp.Core.Log.CriticalPrefix">
            <summary>LogLevelCriticalPrefix</summary>
        </member>
        <member name="M:NsqSharp.Core.Log.Prefix(NsqSharp.Core.LogLevel)">
            <summary>LogPrefix Resolution</summary>
        </member>
        <member name="T:NsqSharp.Core.IMessageDelegate">
            <summary>
            MessageDelegate is an interface of methods that are used as
            callbacks in Message
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IMessageDelegate.OnFinish(NsqSharp.Message)">
            <summary>
            OnFinish is called when the Finish() method
            is triggered on the Message
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IMessageDelegate.OnRequeue(NsqSharp.Message,System.Nullable{System.TimeSpan},System.Boolean)">
            <summary>
            OnRequeue is called when the Requeue() method
            is triggered on the Message
            </summary>
        </member>
        <member name="M:NsqSharp.Core.IMessageDelegate.OnTouch(NsqSharp.Message)">
            <summary>
            OnTouch is called when the Touch() method
            is triggered on the Message
            </summary>
        </member>
        <member name="T:NsqSharp.Core.ErrNotConnected">
            <summary>
            ErrNotConnected is returned when a publish command is made
            against a Producer that is not connected
            </summary>
        </member>
        <member name="M:NsqSharp.Core.ErrNotConnected.#ctor">
            <summary>Initializes a new instance of the ErrNotConnected class.</summary>
        </member>
        <member name="M:NsqSharp.Core.ErrNotConnected.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Core.ErrNotConnected"/> class with serialized data.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about
            the exception being thrown.</param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about
            the source or destination.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null.</exception>
            <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/>
            is zero (0).</exception>
        </member>
        <member name="T:NsqSharp.Core.ErrStopped">
            <summary>
            ErrStopped is returned when a publish command is
            made against a Producer that has been stopped 
            </summary>
        </member>
        <member name="M:NsqSharp.Core.ErrStopped.#ctor">
            <summary>Initializes a new instance of the ErrStopped class.</summary>
        </member>
        <member name="M:NsqSharp.Core.ErrStopped.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Core.ErrStopped"/> class with serialized data.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about
            the exception being thrown.</param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about
            the source or destination.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null.</exception>
            <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/>
            is zero (0).</exception>
        </member>
        <member name="T:NsqSharp.Core.ErrClosing">
            <summary>
            ErrClosing is returned when a connection is closing
            </summary>
        </member>
        <member name="M:NsqSharp.Core.ErrClosing.#ctor">
            <summary>Initializes a new instance of the ErrClosing class.</summary>
        </member>
        <member name="M:NsqSharp.Core.ErrClosing.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Core.ErrClosing"/> class with serialized data.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about
            the exception being thrown.</param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about
            the source or destination.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null.</exception>
            <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/>
            is zero (0).</exception>
        </member>
        <member name="T:NsqSharp.Core.ErrOverMaxInFlight">
            <summary>
            ErrOverMaxInFlight is returned from Consumer if over max-in-flight
            </summary>
        </member>
        <member name="M:NsqSharp.Core.ErrOverMaxInFlight.#ctor">
            <summary>Initializes a new instance of the ErrOverMaxInFlight class.</summary>
        </member>
        <member name="M:NsqSharp.Core.ErrOverMaxInFlight.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Core.ErrOverMaxInFlight"/> class with serialized data.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about
            the exception being thrown.</param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about
            the source or destination.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null.</exception>
            <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/>
            is zero (0).</exception>
        </member>
        <member name="T:NsqSharp.Core.ErrIdentify">
            <summary>
            ErrIdentify is returned from Conn as part of the IDENTIFY handshake
            </summary>
        </member>
        <member name="M:NsqSharp.Core.ErrIdentify.#ctor(System.String)">
            <summary>Initializes a new instance of the ErrIdentify class.</summary>
        </member>
        <member name="M:NsqSharp.Core.ErrIdentify.#ctor(System.String,System.Exception)">
            <summary>Initializes a new instance of the ErrIdentify class.</summary>
        </member>
        <member name="M:NsqSharp.Core.ErrIdentify.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Core.ErrIdentify"/> class with serialized data.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about
            the exception being thrown.</param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about
            the source or destination.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null.</exception>
            <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/>
            is zero (0).</exception>
        </member>
        <member name="M:NsqSharp.Core.ErrIdentify.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Sets the <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with information about the exception.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception 
            being thrown.</param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or
            destination.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is a null reference.</exception>
        </member>
        <member name="P:NsqSharp.Core.ErrIdentify.Reason">
            <summary>
            Gets or sets the reason
            </summary>
        </member>
        <member name="T:NsqSharp.Core.ErrProtocol">
            <summary>
            ErrProtocol is returned from Producer when encountering
            an NSQ protocol level error
            </summary>
        </member>
        <member name="M:NsqSharp.Core.ErrProtocol.#ctor(System.String)">
            <summary>Initializes a new instance of the ErrProtocol class.</summary>
        </member>
        <member name="M:NsqSharp.Core.ErrProtocol.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Core.ErrProtocol"/> class with serialized data.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about
            the exception being thrown.</param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about
            the source or destination.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null.</exception>
            <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/>
            is zero (0).</exception>
        </member>
        <member name="T:NsqSharp.Message">
            <summary>
                Message is the fundamental data type containing the <see cref="P:NsqSharp.Message.Id"/>, <see cref="P:NsqSharp.Message.Body"/>, and metadata of a
                message received from an nsqd instance.
            </summary>
        </member>
        <member name="T:NsqSharp.IMessage">
            <summary>
                Message is the fundamental data type containing the <see cref="P:NsqSharp.IMessage.Id"/>, <see cref="P:NsqSharp.IMessage.Body"/>, and metadata of a
                message received from an nsqd instance.
            </summary>
        </member>
        <member name="M:NsqSharp.IMessage.DisableAutoResponse">
            <summary>
                <para>Disables the automatic response that would normally be sent when <see cref="M:NsqSharp.IHandler.HandleMessage(NsqSharp.IMessage)"/>
                returns or throws.</para>
                
                <para>This is useful if you want to batch, buffer, or asynchronously respond to messages.</para>
            </summary>
        </member>
        <member name="M:NsqSharp.IMessage.Finish">
            <summary>
                Sends a FIN command to the nsqd which sent this message, indicating the message processed successfully.
            </summary>
        </member>
        <member name="M:NsqSharp.IMessage.Touch">
            <summary>
                <para>Sends a TOUCH command to the nsqd which sent this message, resetting the default message timeout.</para>
                
                <para>The server-default timeout is 60s; see <see cref="P:NsqSharp.Config.MessageTimeout"/>.</para>
                
                <para>If FIN or REQ have already been sent for this message, calling <see cref="M:NsqSharp.IMessage.Touch"/> has no effect.</para>
            </summary>
        </member>
        <member name="M:NsqSharp.IMessage.Requeue(System.Nullable{System.TimeSpan})">
            <summary>
                <para>Sends a REQ command to the nsqd which sent this message, using the supplied delay.</para>
                
                <para>A delay of <c>null</c> will automatically calculate based on the number of attempts and the configured
                <see cref="P:NsqSharp.Config.DefaultRequeueDelay"/>.</para>
                
                <para>Using this method to respond triggers a backoff event.</para>
            </summary>
            <param name="delay">The minimum amount of time the message will be requeued.</param>
        </member>
        <member name="M:NsqSharp.IMessage.RequeueWithoutBackoff(System.Nullable{System.TimeSpan})">
            <summary>
                <para>Sends a REQ command to the nsqd which sent this message, using the supplied delay.</para>
            
                <para>A delay of <c>null</c> will automatically calculate based on the number of attempts and the configured
                <see cref="P:NsqSharp.Config.DefaultRequeueDelay"/>.</para>
                
                <para>Using this method to respond does not trigger a backoff event.</para>
            </summary>
            <param name="delay">The minimum amount of time the message will be requeued.</param>
        </member>
        <member name="M:NsqSharp.IMessage.WriteTo(System.IO.Stream)">
            <summary>
                <para>Encodes the message frame and body and writes it to the supplied <paramref name="writeStream"/>.</para>
                
                <para>It is suggested that the target <paramref name="writeStream"/> is buffered to avoid performing many
                system calls.</para>
            </summary>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="writeStream"/> is <c>null</c>.</exception>
            <param name="writeStream">The stream to write this message.</param>
            <returns>The number of bytes written to <paramref name="writeStream"/>.</returns>
        </member>
        <member name="P:NsqSharp.IMessage.Body">
            <summary>The message body byte array.</summary>
            <value>The message body byte array.</value>
        </member>
        <member name="P:NsqSharp.IMessage.Timestamp">
            <summary>The original timestamp when the message was published.</summary>
            <value>The original timestamp when the message was published.</value>
        </member>
        <member name="P:NsqSharp.IMessage.Attempts">
            <summary>The current attempt count to process this message. The first attempt is <c>1</c>.</summary>
            <value>The current attempt count to process this message. The first attempt is <c>1</c>.</value>
        </member>
        <member name="P:NsqSharp.IMessage.MaxAttempts">
            <summary>The maximum number of attempts before nsqd will permanently fail this message.</summary>
            <value>The maximum number of attempts before nsqd will permanently fail this message.</value>
        </member>
        <member name="P:NsqSharp.IMessage.NsqdAddress">
            <summary>The nsqd address which sent this message.</summary>
            <value>The nsqd address which sent this message.</value>
        </member>
        <member name="P:NsqSharp.IMessage.IsAutoResponseDisabled">
            <summary>
                Indicates whether or not this message will be responded to automatically when
                <see cref="M:NsqSharp.IHandler.HandleMessage(NsqSharp.IMessage)"/> returns or throws.
            </summary>
            <value><c>true</c> if automatic response is disabled; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:NsqSharp.IMessage.HasResponded">
            <summary>Indicates whether or not this message has been FIN'd or REQ'd.</summary>
            <value><c>true</c> if this message has been FIN'd or REQ'd; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:NsqSharp.IMessage.BackoffTriggered">
            <summary>
                Indicates whether this message triggered a backoff event, causing the <see cref="T:NsqSharp.Consumer"/>
                to slow its processing based on <see cref="P:NsqSharp.Config.BackoffStrategy"/>.
            </summary>
            <value><c>true</c> if this message triggered a backoff event; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:NsqSharp.IMessage.RequeuedUntil">
            <summary>
                The minimum date/time the message will be requeued until; <c>null</c> indicates the message has not been
                requeued.
            </summary>
            <value>
                The minimum date/time the message will be requeued until; <c>null</c> indicates the message has not been
                requeued.
            </value>
        </member>
        <member name="P:NsqSharp.IMessage.Id">
            <summary>
                <para>The message ID as a hexadecimal string.</para>
                
                <para>The message ID for a given message will be the same across channels; the message ID is created at the
                topic level. If the message is requeued or times out it will retain the same message ID on future
                attempts.</para>
            </summary>
            <value>The message ID as a hexadecimal string.</value>
        </member>
        <member name="F:NsqSharp.Message.MsgIdLength">
            <summary>The number of bytes for a Message.ID</summary>
        </member>
        <member name="M:NsqSharp.Message.#ctor(System.Byte[],System.Byte[])">
            <summary>Initializes a new instance of the <see cref="T:NsqSharp.Message"/> class.</summary>
            <remarks>
                The class is created in response to messages read from the TCP connection with nsqd. Typically you would not
                need to instantiate this class yourself.
            </remarks>
            <exception cref="T:System.ArgumentNullException">Thrown when either <paramref name="id"/> or <paramref name="body"/> are
                <c>null</c>.
            </exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when the <paramref name="id"/> length is not 16.</exception>
            <param name="id">The message ID.</param>
            <param name="body">The message body.</param>
        </member>
        <member name="M:NsqSharp.Message.DisableAutoResponse">
            <summary>
                <para>Disables the automatic response that would normally be sent when <see cref="M:NsqSharp.IHandler.HandleMessage(NsqSharp.IMessage)"/>
                returns or throws.</para>
                
                <para>This is useful if you want to batch, buffer, or asynchronously respond to messages.</para>
            </summary>
        </member>
        <member name="M:NsqSharp.Message.Finish">
            <summary>
                Sends a FIN command to the nsqd which sent this message, indicating the message processed successfully.
            </summary>
        </member>
        <member name="M:NsqSharp.Message.Touch">
            <summary>
                <para>Sends a TOUCH command to the nsqd which sent this message, resetting the default message timeout.</para>
                
                <para>The server-default timeout is 60s; see <see cref="P:NsqSharp.Config.MessageTimeout"/>.</para>
                
                <para>If FIN or REQ have already been sent for this message, calling <see cref="M:NsqSharp.Message.Touch"/> has no effect.</para>
            </summary>
        </member>
        <member name="M:NsqSharp.Message.Requeue(System.Nullable{System.TimeSpan})">
            <summary>
                <para>Sends a REQ command to the nsqd which sent this message, using the supplied delay.</para>
                
                <para>A delay of <c>null</c> will automatically calculate based on the number of attempts and the configured
                <see cref="P:NsqSharp.Config.DefaultRequeueDelay"/>.</para>
                
                <para>Using this method to respond triggers a backoff event.</para>
            </summary>
            <param name="delay">The minimum amount of time the message will be requeued.</param>
        </member>
        <member name="M:NsqSharp.Message.RequeueWithoutBackoff(System.Nullable{System.TimeSpan})">
            <summary>
                <para>Sends a REQ command to the nsqd which sent this message, using the supplied delay.</para>
            
                <para>A delay of <c>null</c> will automatically calculate based on the number of attempts and the configured
                <see cref="P:NsqSharp.Config.DefaultRequeueDelay"/>.</para>
                
                <para>Using this method to respond does not trigger a backoff event.</para>
            </summary>
            <param name="delay">The minimum amount of time the message will be requeued.</param>
        </member>
        <member name="M:NsqSharp.Message.WriteTo(System.IO.Stream)">
            <summary>
                <para>Encodes the message frame and body and writes it to the supplied <paramref name="writeStream"/>.</para>
                
                <para>It is suggested that the target <paramref name="writeStream"/> is buffered to avoid performing many
                system calls.</para>
            </summary>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="writeStream"/> is <c>null</c>.</exception>
            <param name="writeStream">The stream to write this message.</param>
            <returns>The number of bytes written to <paramref name="writeStream"/>.</returns>
        </member>
        <member name="M:NsqSharp.Message.DecodeMessage(System.Byte[])">
            <summary>Decodes <paramref name="data"/> and creates a new <see cref="T:NsqSharp.Message"/>.</summary>
            <exception cref="T:System.ArgumentNullException">Thrown <paramref name="data"/> is <c>null</c>.</exception>
            <param name="data">The fully encoded message.</param>
            <returns>The decoded message.</returns>
        </member>
        <member name="P:NsqSharp.Message.Body">
            <summary>The message body byte array.</summary>
            <value>The message body byte array.</value>
        </member>
        <member name="P:NsqSharp.Message.Timestamp">
            <summary>The original timestamp when the message was published.</summary>
            <value>The original timestamp when the message was published.</value>
        </member>
        <member name="P:NsqSharp.Message.Attempts">
            <summary>The current attempt count to process this message. The first attempt is <c>1</c>.</summary>
            <value>The current attempt count to process this message. The first attempt is <c>1</c>.</value>
        </member>
        <member name="P:NsqSharp.Message.MaxAttempts">
            <summary>The maximum number of attempts before nsqd will permanently fail this message.</summary>
            <value>The maximum number of attempts before nsqd will permanently fail this message.</value>
        </member>
        <member name="P:NsqSharp.Message.NsqdAddress">
            <summary>The nsqd address which sent this message.</summary>
            <value>The nsqd address which sent this message.</value>
        </member>
        <member name="P:NsqSharp.Message.IsAutoResponseDisabled">
            <summary>
                Indicates whether or not this message will be responded to automatically when
                <see cref="M:NsqSharp.IHandler.HandleMessage(NsqSharp.IMessage)"/> returns or throws.
            </summary>
            <value><c>true</c> if automatic response is disabled; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:NsqSharp.Message.HasResponded">
            <summary>Indicates whether or not this message has been FIN'd or REQ'd.</summary>
            <value><c>true</c> if this message has been FIN'd or REQ'd; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:NsqSharp.Message.BackoffTriggered">
            <summary>
                Indicates whether this message triggered a backoff event, causing the <see cref="T:NsqSharp.Consumer"/>
                to slow its processing based on <see cref="P:NsqSharp.Config.BackoffStrategy"/>.
            </summary>
            <value><c>true</c> if this message triggered a backoff event; otherwise, <c>false</c>.</value>
        </member>
        <member name="P:NsqSharp.Message.RequeuedUntil">
            <summary>
                The minimum date/time the message will be requeued until; <c>null</c> indicates the message has not been
                requeued.
            </summary>
            <value>
                The minimum date/time the message will be requeued until; <c>null</c> indicates the message has not been
                requeued.
            </value>
        </member>
        <member name="P:NsqSharp.Message.Id">
            <summary>
                <para>The message ID as a hexadecimal string.</para>
                
                <para>The message ID for a given message will be the same across channels; the message ID is created at the
                topic level. If the message is requeued or times out it will retain the same message ID on future
                attempts.</para>
            </summary>
            <value>The message ID as a hexadecimal string.</value>
        </member>
        <member name="T:NsqSharp.Core.Protocol">
            <summary>
            Protocol
            </summary>
        </member>
        <member name="F:NsqSharp.Core.Protocol.MagicV1">
            <summary>
            MagicV1 is the initial identifier sent when connecting for V1 clients
            </summary>
        </member>
        <member name="F:NsqSharp.Core.Protocol.MagicV2">
            <summary>
            MagicV2 is the initial identifier sent when connecting for V2 clients
            </summary>
        </member>
        <member name="M:NsqSharp.Core.Protocol.IsValidTopicName(System.String)">
            <summary>
            IsValidTopicName checks a topic name for correctness
            </summary>
            <param name="name">The topic name to check</param>
            <returns><c>true</c> if the topic name is valid; otherwise, <c>false</c></returns>
        </member>
        <member name="M:NsqSharp.Core.Protocol.IsValidChannelName(System.String)">
            <summary>
            IsValidChannelName checks a channel name for correctness
            </summary>
            <param name="name">The channel name to check</param>
            <returns><c>true</c> if the channel name is valid; otherwise, <c>false</c></returns>
        </member>
        <member name="M:NsqSharp.Core.Protocol.ReadResponse(NsqSharp.Utils.IReader)">
            <summary>
            ReadResponse is a client-side utility function to read from the supplied Reader
            according to the NSQ protocol spec
            </summary>
            <param name="r">The stream to read from</param>
            <returns>The response as a byte array</returns>
        </member>
        <member name="M:NsqSharp.Core.Protocol.UnpackResponse(System.Byte[],NsqSharp.Core.FrameType@,System.Byte[]@)">
            <summary>
            UnpackResponse is a client-side utility function that unpacks serialized data
            according to NSQ protocol spec
            /// </summary>
            <param name="response">The response to unpack</param>
            <param name="frameType">The frame type.</param>
            <param name="body">The body.</param>
        </member>
        <member name="M:NsqSharp.Core.Protocol.ReadUnpackedResponse(NsqSharp.Utils.IReader,NsqSharp.Core.FrameType@,System.Byte[]@)">
            <summary>
            ReadUnpackedResponse reads and parses data from the underlying
            TCP connection according to the NSQ TCP protocol spec and
            returns the frameType, data or error
            </summary>
            <param name="r">The reader to read from</param>
            <param name="frameType">The frame type.</param>
            <param name="body">The body.</param>
        </member>
        <member name="T:NsqSharp.Core.FrameType">
            <summary>
            Frame types
            </summary>
        </member>
        <member name="F:NsqSharp.Core.FrameType.Response">
            <summary>Response</summary>
        </member>
        <member name="F:NsqSharp.Core.FrameType.Error">
            <summary>Error</summary>
        </member>
        <member name="F:NsqSharp.Core.FrameType.Message">
            <summary>Message</summary>
        </member>
        <member name="T:NsqSharp.Core.State">
            <summary>
            States
            </summary>
        </member>
        <member name="F:NsqSharp.Core.State.Init">
            <summary>Init</summary>
        </member>
        <member name="F:NsqSharp.Core.State.Disconnected">
            <summary>Disconnected</summary>
        </member>
        <member name="F:NsqSharp.Core.State.Connected">
            <summary>Connected</summary>
        </member>
        <member name="F:NsqSharp.Core.State.Subscribed">
            <summary>Subscribed</summary>
        </member>
        <member name="F:NsqSharp.Core.State.Closing">
            <summary>
            Closing means CLOSE has started...
            (responses are ok, but no new messages will be sent)
            </summary>
        </member>
        <member name="T:NsqSharp.Core.ClientInfo">
            <summary>
            NSQ Client Information
            </summary>
        </member>
        <member name="F:NsqSharp.Core.ClientInfo.ClientName">
            <summary>Client name</summary>
        </member>
        <member name="P:NsqSharp.Core.ClientInfo.Version">
            <summary>Version</summary>
        </member>
        <member name="T:NsqSharp.Api.HttpMethod">
            <summary>Values that represent HTTP methods.</summary>
        </member>
        <member name="F:NsqSharp.Api.HttpMethod.Get">
            <summary>GET method.</summary>
        </member>
        <member name="F:NsqSharp.Api.HttpMethod.Post">
            <summary>POST method.</summary>
        </member>
        <member name="T:NsqSharp.Utils.Attributes.DefaultAttribute">
            <summary>
            Default value attribute.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Attributes.DefaultAttribute.#ctor(System.Object)">
            <summary>
            Initializes a new instance of the DefaultAttribute class.
            </summary>
            <param name="value">The default value.</param>
        </member>
        <member name="P:NsqSharp.Utils.Attributes.DefaultAttribute.Value">
            <summary>
            Gets the default value.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Attributes.MaxAttribute">
            <summary>
            Max value attribute.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Attributes.MaxAttribute.#ctor(System.Object)">
            <summary>
            Initializes a new instance of the MaxAttribute class.
            </summary>
            <param name="value">The maximum value.</param>
        </member>
        <member name="P:NsqSharp.Utils.Attributes.MaxAttribute.Value">
            <summary>
            Gets the maximum value.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Attributes.MinAttribute">
            <summary>
            Min value attribute.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Attributes.MinAttribute.#ctor(System.Object)">
            <summary>
            Initializes a new instance of the MinAttribute class.
            </summary>
            <param name="value">The minimum value.</param>
        </member>
        <member name="P:NsqSharp.Utils.Attributes.MinAttribute.Value">
            <summary>
            Gets the minimum value.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Attributes.OptAttribute">
            <summary>
            Option attribute
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Attributes.OptAttribute.#ctor(System.String)">
            <summary>
            Initializes a new instance of the OptAttribute class.
            </summary>
            <param name="name">The option name to apply to the property.</param>
        </member>
        <member name="P:NsqSharp.Utils.Attributes.OptAttribute.Name">
            <summary>
            The option name.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Binary">
            <summary>
            Binary package. https://golang.org/src/encoding/binary/binary.go
            </summary>
        </member>
        <member name="F:NsqSharp.Utils.Binary.BigEndian">
            <summary>
            BigEndian is the big-endian implementation of ByteOrder.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Binary.ReadInt32(NsqSharp.Utils.IReader,NsqSharp.Utils.IByteOrder)">
            <summary>
            Read reads structured binary data from <paramref name="r"/>.
            Bytes read from <paramref name="r"/> are decoded using the
            specified byte <paramref name="order"/> and written to successive
            fields of the data.
            </summary>
            <param name="r">The reader.</param>
            <param name="order">The byte order.</param>
        </member>
        <member name="T:NsqSharp.Utils.BigEndian">
            <summary>
            Binary.BigEndian 
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.IByteOrder">
            <summary>
            A ByteOrder specifies how to convert byte sequences into
            16-, 32-, or 64-bit unsigned integers.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.IByteOrder.PutUint32(System.Byte[],System.UInt32)">
            <summary>
            Fills a byte array with a <see cref="T:System.UInt32"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.IByteOrder.PutUint32(System.Byte[],System.Int32)">
            <summary>
            Fills a byte array with a <see cref="M:NsqSharp.Utils.IByteOrder.Int32(System.Byte[])"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.IByteOrder.PutUint32(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Fills a byte array with a <see cref="M:NsqSharp.Utils.IByteOrder.Int32(System.Byte[])"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.IByteOrder.Int32(System.Byte[])">
            <summary>
            Reads a byte array into a new <see cref="M:NsqSharp.Utils.IByteOrder.Int32(System.Byte[])"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.PutUint64(System.Byte[],System.UInt64)">
            <summary>
            Fills a byte array with a <see cref="T:System.UInt64"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.PutUint64(System.IO.BinaryWriter,System.UInt64)">
            <summary>
            Writes a <see cref="T:System.UInt64"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.PutUint32(System.Byte[],System.UInt32)">
            <summary>
            Fills a byte array with a <see cref="T:System.UInt32"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.PutUint32(System.IO.BinaryWriter,System.UInt32)">
            <summary>
            Writes a <see cref="T:System.UInt32"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.PutUint32(System.Byte[],System.Int32)">
            <summary>
            Fills a byte array with a <see cref="T:System.Int32"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.PutUint32(System.IO.BinaryWriter,System.Int32)">
            <summary>
            Writes a <see cref="T:System.Int32"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.PutUint32(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Fills a byte array with a <see cref="T:System.Int32"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.PutUint16(System.Byte[],System.UInt16)">
            <summary>
            Fills a byte array with a <see cref="T:System.UInt16"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.PutUint16(System.IO.BinaryWriter,System.UInt16)">
            <summary>
            Fills a byte array with a <see cref="T:System.UInt16"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.Int32(System.Byte[])">
            <summary>
            Reads a byte array into a new <see cref="T:System.Int32"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.UInt64(System.Byte[])">
            <summary>
            Reads a byte array into a new <see cref="T:System.Int64"/> using big endian ordering.
            Warning: Will reorder byte array if <see cref="F:System.BitConverter.IsLittleEndian"/> is <c>true</c>.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.UInt64(System.IO.BinaryReader)">
            <summary>
            Reads a a new <see cref="T:System.UInt64"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.UInt16(System.Byte[])">
            <summary>
            Reads a byte array into a new <see cref="T:System.UInt16"/> using big endian ordering.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.BigEndian.UInt16(System.IO.BinaryReader)">
            <summary>
            Reads a a new <see cref="T:System.UInt16"/> using big endian ordering.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Channels.Chan`1">
            <summary>
            Channel for synchronizing communication between threads. Supports foreach to read from the channel until it's closed. See also <see cref="T:NsqSharp.Utils.Channels.Select"/>.
            </summary>
            <typeparam name="T">The message type communicated over the channel.</typeparam>
        </member>
        <member name="T:NsqSharp.Utils.Channels.IReceiveOnlyChan`1">
            <summary>
            IReceiveOnlyChan interface.
            </summary>
            <typeparam name="T">The type of data received on the channel.</typeparam>
        </member>
        <member name="T:NsqSharp.Utils.Channels.IReceiveOnlyChan">
            <summary>
            IReceiveOnlyChan interface.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Channels.IChan">
            <summary>
            IChan interface.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.IChan.AddListenForSend(System.Threading.AutoResetEvent)">
            <summary>Add a listener which will be notified when a channel is ready to send.</summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.IChan.AddListenForReceive(System.Threading.AutoResetEvent)">
            <summary>Add a listener which will be notified when a channel is ready to receive.</summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.IChan.RemoveListenForSend(System.Threading.AutoResetEvent)">
            <summary>Remove a listener for send.</summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.IChan.RemoveListenForReceive(System.Threading.AutoResetEvent)">
            <summary>Remove a listener for send.</summary>
        </member>
        <member name="P:NsqSharp.Utils.Channels.IChan.IsClosed">
            <summary>Gets a value indicating whether the channel is closed.</summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.IReceiveOnlyChan.ReceiveOk(System.Boolean@)">
            <summary>
            Receives a message from the channel. Blocks until a message is ready or channel is closed.
            </summary>
            <returns>The message received.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.IReceiveOnlyChan.TryLockReceive">
            <summary>
            Tries to lock the receive method to the current thread.
            </summary>
            <returns><c>true</c> if the lock was successful; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.IReceiveOnlyChan.UnlockReceive">
            <summary>
            Unlocks the receive method.
            </summary>
        </member>
        <member name="P:NsqSharp.Utils.Channels.IReceiveOnlyChan.IsReadyToSend">
            <summary>
            Gets a value indicating if the channel is ready to send and waiting for a receiver.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.IReceiveOnlyChan`1.Receive">
            <summary>
            Receives a message from the channel. Blocks until a message is ready or channel is closed.
            </summary>
            <returns>The message received.</returns>
        </member>
        <member name="T:NsqSharp.Utils.Channels.ISendOnlyChan`1">
            <summary>
            ISendOnlyChan interface.
            </summary>
            <typeparam name="T">The type of data sent on the channel</typeparam>
        </member>
        <member name="T:NsqSharp.Utils.Channels.ISendOnlyChan">
            <summary>
            ISendOnlyChan interface.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.ISendOnlyChan.TryLockSend">
            <summary>
            Tries to lock the send method to the current thread.
            </summary>
            <returns><c>true</c> if the lock was successful; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.ISendOnlyChan.UnlockSend">
            <summary>
            Unlocks the send method.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.ISendOnlyChan.TrySend(System.Object,System.TimeSpan)">
            <summary>
            Tries to send a message to the channel. Blocks until the message is received 
            or the <paramref name="timeout"/>  expires.
            </summary>
            <param name="message">The message to send.</param>
            <param name="timeout">The timout period.</param>
            <returns><c>true</c> if the message was sent; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.ISendOnlyChan`1.Send(`0)">
            <summary>
            Sends a message to the channel. Blocks until the message is received.
            </summary>
            <param name="message">The message to send.</param>
        </member>
        <member name="M:NsqSharp.Utils.Channels.Chan`1.#ctor">
            <summary>
            Initializes a new unbuffered channel.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.Chan`1.#ctor(System.Int32)">
            <summary>
            Initializes a new channel with specified <paramref name="bufferSize"/>.
            </summary>
            <param name="bufferSize">The size of the send buffer.</param>
        </member>
        <member name="M:NsqSharp.Utils.Channels.Chan`1.Send(`0)">
            <summary>
            Sends a message to the channel. Blocks until the message is received.
            </summary>
            <param name="message">The message to send.</param>
        </member>
        <member name="M:NsqSharp.Utils.Channels.Chan`1.Receive">
            <summary>
            Receives a message from the channel. Blocks until a message is ready or the channel is closed.
            </summary>
            <returns>The message received; or default(T) if the channel was closed.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.Chan`1.ReceiveOk(System.Boolean@)">
            <summary>
            Receives a message from the channel. Blocks until a message is ready or the channel is closed.
            </summary>
            <returns>The message received; or default(T) if the channel was closed. Includes an indicator
            whether the channel was closed or not.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.Chan`1.GetEnumerator">
            <summary>Returns an enumerator that iterates through the collection.</summary>
            <returns>A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate
            through the collection.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.Chan`1.Close">
            <summary>
            Closes the channel.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Channels.ChannelClosedException">
            <summary>
            Occurs when attempt to send or receive from a closed channel.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.ChannelClosedException.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Utils.Channels.ChannelClosedException"/> class.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.ChannelClosedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Utils.Channels.ChannelClosedException"/> class with serialized data.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about
            the exception being thrown.</param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about
            the source or destination.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null.</exception>
            <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/>
            is zero (0).</exception>
        </member>
        <member name="T:NsqSharp.Utils.Channels.Select">
             <summary>
             Control structure to send or receive from the first available channel. Chain Case methods and end with a
             call to Default or NoDefault.
             </summary>
             <example>
             private static void Main()
             {
                 var c = new Chan&lt;string&gt;();
                 var quit = new Chan&lt;bool&gt;();
            
                 Task.Factory.StartNew(() => GetNumbers(c, "A", quit));
                 Task.Factory.StartNew(() => GetNumbers(c, "B", quit));
                 Task.Factory.StartNew(() => GetNumbers(c, "C", quit));
            
                 int count = 0;
                 foreach (var msg in c)
                 {
                     Console.WriteLine(msg);
            
                     if (count > 100)
                     {
                         quit.Send(true);
                         quit.Send(true);
                         quit.Send(true);
                     }
            
                     count++;
                 }
             }
             
             private static void GetNumbers(Chan&lt;string&gt; c, string name, Chan&lt;bool&gt; quit)
             {
                for (var i = 1; !breakLoop; i++)
                {
                    Select
                        .CaseSend(c, string.Format("{0} {1}", name, i), () =>
                        {
                            if (name == "A")
                            {
                                Thread.Sleep(200);
                            }
                            if (name == "C")
                            {
                                Thread.Sleep(100);
                            }
                            Thread.Sleep(100);
                        })
                        .CaseReceive(quit, o =>
                        {
                            breakLoop = true;
                        })
                       .NoDefault();
                }
             
                c.Close();
             }
             </example>
        </member>
        <member name="M:NsqSharp.Utils.Channels.Select.CaseReceive``1(NsqSharp.Utils.Channels.IReceiveOnlyChan{``0},System.Action{``0})">
            <summary>
            Creates a case for receiving from the specific channel.
            </summary>
            <param name="c">The channel to receive from. Can be <c>null</c>.</param>
            <param name="func">The function to execute with the data received from the channel. Can be <c>null</c></param>
            <returns>An instance to append another Case, Default, or NoDefault. Select must end with a call to 
            Default or NoDefault.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.Select.CaseReceiveOk``1(NsqSharp.Utils.Channels.IReceiveOnlyChan{``0},System.Action{``0,System.Boolean})">
            <summary>
            Creates a case for receiving from the specific channel.
            </summary>
            <param name="c">The channel to receive from. Can be <c>null</c>.</param>
            <param name="func">The function to execute with the data received from the channel.</param>
            <returns>An instance to append another Case, Default, or NoDefault. Select must end with a call to 
            Default or NoDefault.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.Select.CaseSend``1(NsqSharp.Utils.Channels.ISendOnlyChan{``0},``0,System.Action)">
            <summary>
            Creates a case for sending to the specific channel.
            </summary>
            <param name="c">The channel to send to. Can be <c>null</c>.</param>
            <param name="message">The message to send.</param>
            <param name="func">The callback function to execute once the message has been sent. Can be <c>null</c>.</param>
            <returns>An instance to append another Case, Default, or NoDefault. Select must end with a call to
            Default or NoDefault.</returns>
        </member>
        <member name="T:NsqSharp.Utils.Channels.SelectCase">
            <summary>
            Control structure to send or receive from the first available channel. Chain Case methods and end with a call to
            Default or NoDefault.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.SelectCase.CaseReceiveOk``1(NsqSharp.Utils.Channels.IReceiveOnlyChan{``0},System.Action{``0,System.Boolean})">
            <summary>
            Creates a case for receiving from the specific channel.
            </summary>
            <param name="c">The channel to receive from. Can be <c>null</c>.</param>
            <param name="func">The function to execute with the data received from the channel.</param>
            <returns>An instance to append another Case, Default, or NoDefault. Select must end with a call to
            Default or NoDefault.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.SelectCase.CaseReceive``1(NsqSharp.Utils.Channels.IReceiveOnlyChan{``0},System.Action{``0})">
            <summary>
            Creates a case for receiving from the specific channel.
            </summary>
            <param name="c">The channel to receive from. Can be <c>null</c>.</param>
            <param name="func">The function to execute with the data received from the channel. Can be <c>null</c></param>
            <returns>An instance to append another Case, Default, or NoDefault. Select must end with a call to
            Default or NoDefault.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.SelectCase.CaseSend``1(NsqSharp.Utils.Channels.ISendOnlyChan{``0},``0,System.Action)">
            <summary>
            Creates a case for sending to the specific channel.
            </summary>
            <param name="c">The channel to send to. Can be <c>null</c>.</param>
            <param name="message">The message to send.</param>
            <param name="func">The callback function to execute once the message has been sent. Can be <c>null</c>.</param>
            <returns>An instance to append another Case, Default, or NoDefault. Select must end with a call to
            Default or NoDefault.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Channels.SelectCase.Default(System.Action)">
            <summary>
            Executes a default action if no channels are ready.
            </summary>
            <param name="func">The callback function to execute if no channels are ready. Can be <c>null</c>.</param>
        </member>
        <member name="M:NsqSharp.Utils.Channels.SelectCase.NoDefault(System.Boolean)">
            <summary>
            Specifies that no action should be taken if no channels are ready. Blocks until one channel is ready and its
            callback function has been executed.
            </summary>
            <param name="defer">Defers execution to use the same build-up in a loop. Call <see cref="M:NsqSharp.Utils.Channels.SelectCase.Execute"/> inside the
            loop, and wrap in a using or manually call <see cref="M:NsqSharp.Utils.Channels.SelectCase.Dispose"/> when done.</param>
        </member>
        <member name="M:NsqSharp.Utils.Channels.SelectCase.Execute">
            <summary>
            Executes the select. Only necessary if defer = <c>true</c> was passed to <see cref="M:NsqSharp.Utils.Channels.SelectCase.NoDefault(System.Boolean)"/>.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Channels.SelectCase.Dispose">
            <summary>
            Clean up references. Only necessary if defer = <c>true</c> was passed to <see cref="M:NsqSharp.Utils.Channels.SelectCase.NoDefault(System.Boolean)"/>.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Extensions.StringExtensions">
            <summary>
            <see cref="T:System.String"/> extension methods.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Extensions.StringExtensions.IsNullOrWhiteSpace(System.String)">
            <summary>
            Indicates whether a specified string is <c>null</c>, empty, or consists only of white-space characters.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Loggers.ConsoleLogger">
            <summary>
            Console logger
            </summary>
        </member>
        <member name="T:NsqSharp.Core.ILogger">
            <summary>
            Logger interface.
            </summary>
        </member>
        <member name="M:NsqSharp.Core.ILogger.Output(NsqSharp.Core.LogLevel,System.String)">
            <summary>
            Writes the output for a logging event.
            </summary>
        </member>
        <member name="M:NsqSharp.Core.ILogger.Flush">
            <summary>
            Flushes the output stream.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Loggers.ConsoleLogger.#ctor(NsqSharp.Core.LogLevel)">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Utils.Loggers.ConsoleLogger"/> class.
            </summary>
            <param name="minLogLevel">The minimum <see cref="T:NsqSharp.Core.LogLevel"/> to output.</param>
        </member>
        <member name="M:NsqSharp.Utils.Loggers.ConsoleLogger.Output(NsqSharp.Core.LogLevel,System.String)">
            <summary>
            Writes the output for a logging event.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Loggers.ConsoleLogger.Flush">
            <summary>
            Flushes the output stream.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Loggers.TraceLogger">
            <summary>
            Trace logger
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Loggers.TraceLogger.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:NsqSharp.Utils.Loggers.TraceLogger"/> class.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Loggers.TraceLogger.Output(NsqSharp.Core.LogLevel,System.String)">
            Output writes the output for a logging event. The string s contains
            the text to print after the prefix specified by the flags of the
            Logger. A newline is appended if the last character of s is not
            already a newline.
        </member>
        <member name="M:NsqSharp.Utils.Loggers.TraceLogger.Flush">
            <summary>
            Flushes the output stream.
            </summary>
        </member>
        <member name="T:NsqSharp.configHandler">
            <summary>
            Define handlers for setting config defaults, and setting config values from command line arguments or config files
            </summary>
        </member>
        <member name="T:NsqSharp.IBackoffConfig">
            <summary>
            Read only configuration values related to backoff.
            </summary>
        </member>
        <member name="P:NsqSharp.IBackoffConfig.BackoffMultiplier">
            <summary>Unit of time for calculating consumer backoff.</summary>
        </member>
        <member name="T:NsqSharp.IBackoffStrategy">
            <summary>
            <see cref="T:NsqSharp.IBackoffStrategy"/> defines a strategy for calculating the duration of time
            a consumer should backoff for a given attempt
            </summary>
        </member>
        <member name="M:NsqSharp.IBackoffStrategy.Calculate(NsqSharp.IBackoffConfig,System.Int32)">
            <summary>Calculates the backoff time.</summary>
            <param name="backoffConfig">Read only configuration values related to backoff.</param>
            <param name="attempt">The number of times this message has been attempted (first attempt = 1).</param>
            <returns>The <see cref="T:System.TimeSpan"/> to backoff.</returns>
        </member>
        <member name="T:NsqSharp.ExponentialStrategy">
            <summary>
            <see cref="T:NsqSharp.ExponentialStrategy"/> implements an exponential backoff strategy (default)
            </summary>
        </member>
        <member name="M:NsqSharp.ExponentialStrategy.Calculate(NsqSharp.IBackoffConfig,System.Int32)">
            <summary>
            Calculate returns a duration of time: 2 ^ attempt * <see cref="P:NsqSharp.IBackoffConfig.BackoffMultiplier"/>.
            </summary>
            <param name="backoffConfig">Read only configuration values related to backoff.</param>
            <param name="attempt">The number of times this message has been attempted (first attempt = 1).</param>
            <returns>The <see cref="T:System.TimeSpan"/> to backoff.</returns>
        </member>
        <member name="T:NsqSharp.FullJitterStrategy">
            <summary>
            FullJitterStrategy returns a random duration of time [0, 2 ^ attempt].
            Implements http://www.awsarchitectureblog.com/2015/03/backoff.html.
            </summary>
        </member>
        <member name="M:NsqSharp.FullJitterStrategy.Calculate(NsqSharp.IBackoffConfig,System.Int32)">
            <summary>
            Calculate returns a random duration of time [0, 2 ^ attempt] * <see cref="P:NsqSharp.IBackoffConfig.BackoffMultiplier"/>.
            </summary>
            <param name="backoffConfig">Read only configuration values related to backoff.</param>
            <param name="attempt">The number of times this message has been attempted (first attempt = 1).</param>
            <returns>The <see cref="T:System.TimeSpan"/> to backoff.</returns>
        </member>
        <member name="T:NsqSharp.Config">
             <summary>
             Config is a struct of NSQ options
            
             The only valid way to create a Config is via NewConfig, using a struct literal will panic.
             After Config is passed into a high-level type (like Consumer, Producer, etc.) the values are no
             longer mutable (they are copied).
            
             Use Set(string option, object value) as an alternate way to set parameters
             </summary>
        </member>
        <member name="M:NsqSharp.Config.#ctor">
            <summary>
            Initializes a new instance of Config.
            </summary>
        </member>
        <member name="M:NsqSharp.Config.Set(System.String,System.Object)">
            <summary>
                <para>Takes an <paramref name="option"/> as a string and a <paramref name="value"/> and attempts to set the
                appropriate configuration option.</para>
                
                <para>It attempts to coerce the <paramref name="value"/> into the right format depending on the named option
                and the underlying type of the value passed in.</para>
                
                <para>Calls to <see cref="M:NsqSharp.Config.Set(System.String,System.Object)"/> that take a <see cref="T:System.TimeSpan"/> as an argument can be input as:
                <list type="bullet">
                    <item><description>"1000ms" (a string parsed by <see cref="M:NsqSharp.Utils.Time.ParseDuration(System.String)"/>)</description></item>
                    <item><description>1000 (an integer interpreted as milliseconds)</description></item>
                    <item><description><see cref="M:System.TimeSpan.FromMilliseconds(System.Double)"/>(1000) (a literal <see cref="T:System.TimeSpan"/>
                    value)</description></item>
                </list>
                </para>
                
                <para>Calls to <see cref="M:NsqSharp.Config.Set(System.String,System.Object)"/> that take bool can be input as:
                <list type="bullet">
                    <item><description>"true" (a string parsed by <see cref="M:System.Boolean.Parse(System.String)"/>)</description></item>
                    <item><description>true (a boolean)</description></item>
                    <item><description>1 (an int where 1 == true and 0 == false)</description></item>
                </list>
                </para>
            </summary>
            <exception cref="T:System.Exception"><para>Thrown when an invalid <paramref name="option"/> name is specified.</para>
                <para>Thrown when an invalid <paramref name="value"/> is specified for the given
                <paramref name="option"/>.</para>
            </exception>
            <param name="option">The option name. See the <see cref="P:NsqSharp.Utils.Attributes.OptAttribute.Name"/> on <see cref="T:NsqSharp.Config"/> properties
                for valid option names.
            </param>
            <param name="value">The value.</param>
        </member>
        <member name="M:NsqSharp.Config.Validate">
            <summary>Checks that all config values are within specified min/max ranges.</summary>
        </member>
        <member name="M:NsqSharp.Config.Clone">
            <summary>Clones (makes a copy) of this instance.</summary>
            <returns>A copy of this object.</returns>
        </member>
        <member name="P:NsqSharp.Config.DialTimeout">
            <summary>Deadline for establishing TCP connections.
            Default: 1s</summary>
        </member>
        <member name="P:NsqSharp.Config.ReadTimeout">
            <summary>Deadline for network reads.
            Range: 100ms-5m Default: 60s</summary>
        </member>
        <member name="P:NsqSharp.Config.WriteTimeout">
            <summary>Deadline for network writes.
            Range: 100ms-5m Default: 10s</summary>
        </member>
        <member name="P:NsqSharp.Config.LookupdPollInterval">
            <summary>Duration between polling lookupd for new producers.
            NOTE: when not using nsqlookupd, LookupdPollInterval represents the duration of time between
            reconnection attempts.
            Range: 10ms-5m Default: 60s</summary>
        </member>
        <member name="P:NsqSharp.Config.LookupdPollJitter">
            <summary>Fractional jitter to add to the lookupd pool loop. This helps evenly
            distribute requests even if multiple consumers restart at the same time.
            Range: 0-1 Default: 0.3
            </summary>
        </member>
        <member name="P:NsqSharp.Config.MaxRequeueDelay">
            <summary>Maximum duration when REQueueing (for doubling of deferred requeue).
            Does not limit <see cref="T:System.TimeSpan"/> of manual requeue delays.
            Range: 0-60m Default: 15m</summary>
        </member>
        <member name="P:NsqSharp.Config.DefaultRequeueDelay">
            <summary>Default requeue delay.
            Requeue calculation: <see cref="P:NsqSharp.Config.DefaultRequeueDelay"/> * <see cref="P:NsqSharp.Message.Attempts"/>.
            Range: 0-60m Default: 90s</summary>
        </member>
        <member name="P:NsqSharp.Config.BackoffStrategy">
            <summary>
            Backoff strategy, defaults to <see cref="T:NsqSharp.ExponentialStrategy"/>. Overwrite this to define alternative backoff
            algorithms. See also <see cref="T:NsqSharp.FullJitterStrategy"/>. Supported opt values: 'exponential', 'full_jitter'.
            </summary>
        </member>
        <member name="P:NsqSharp.Config.MaxBackoffDuration">
            <summary>Maximum amount of time to backoff when processing fails.
            Range: 0-60m Default: 2m</summary>
        </member>
        <member name="P:NsqSharp.Config.BackoffMultiplier">
            <summary>Unit of time for calculating consumer backoff.
            Default backoff calculation: <see cref="P:NsqSharp.Config.BackoffMultiplier"/> * (2 ^ backoff counter).
            Will not exceed <see cref="P:NsqSharp.Config.MaxBackoffDuration"/>.
            See: <see cref="P:NsqSharp.Config.BackoffStrategy"/>
            Range: 0-60m Default: 1s</summary>
        </member>
        <member name="P:NsqSharp.Config.MaxAttempts">
            <summary>Maximum number of times this consumer will attempt to process a message before giving up.
            Range: 0-65535 Default: 5</summary>
        </member>
        <member name="P:NsqSharp.Config.LowRdyIdleTimeout">
            <summary>Duration to wait for a message from a producer when in a state where RDY
            counts are re-distributed (ie. max_in_flight &lt; num_producers).
            Range: 1s-5m Default: 10s</summary>
        </member>
        <member name="P:NsqSharp.Config.RDYRedistributeInterval">
            <summary>
            Duration between redistributing max-in-flight to connections.
            Range: 1ms-5s Default: 5s
            </summary>
        </member>
        <member name="P:NsqSharp.Config.RDYRedistributeOnIdle">
            <summary>
            Redistribute RDY counts to active nsqd instances when others are idle.
            Default: <c>false</c>
            </summary>
        </member>
        <member name="P:NsqSharp.Config.ClientID">
            <summary>ClientID identifier sent to nsqd representing this client.
            Default: short hostname.</summary>
        </member>
        <member name="P:NsqSharp.Config.Hostname">
            <summary>Hostname identifier sent to nsqd representing this client.</summary>
        </member>
        <member name="P:NsqSharp.Config.UserAgent">
            <summary>UserAgent identifier sent to nsqd representing this client, in the spirit of HTTP
            Default: NsqSharp/[version].</summary>
        </member>
        <member name="P:NsqSharp.Config.HeartbeatInterval">
            <summary>Duration of time between heartbeats. This must be less than <see cref="P:NsqSharp.Config.ReadTimeout"/>.
            Default: 30s</summary>
        </member>
        <member name="P:NsqSharp.Config.SampleRate">
            <summary>Receive a percentage of messages to sample the channel (requires nsqd 0.2.25+).
            See: https://github.com/bitly/nsq/pull/223 for discussion.
            Range: 0-99 Default: 0 (disabled, receive all messages)
            </summary>
        </member>
        <member name="P:NsqSharp.Config.TlsConfig">
            <summary>TLS configuration. Required to use TLS.</summary>
        </member>
        <member name="P:NsqSharp.Config.Deflate">
            <summary>Use Deflate compression</summary>
        </member>
        <member name="P:NsqSharp.Config.DeflateLevel">
            <summary>Deflate compression level (1-9, default: 6)</summary>
        </member>
        <member name="P:NsqSharp.Config.Snappy">
            <summary>Use Snappy compression</summary>
        </member>
        <member name="P:NsqSharp.Config.OutputBufferSize">
            <summary>Size of the buffer (in bytes) used by nsqd for buffering writes to this connection.
            Default: 16384</summary>
        </member>
        <member name="P:NsqSharp.Config.OutputBufferTimeout">
             <summary>
             <para>Timeout used by nsqd before flushing buffered writes (set to 0 to disable). Default: 250ms</para>
            
             <para>WARNING: configuring clients with an extremely low
             (&lt; 25ms) output_buffer_timeout has a significant effect
             on nsqd CPU usage (particularly with > 50 clients connected).</para>
             </summary>
        </member>
        <member name="P:NsqSharp.Config.MaxInFlight">
            <summary>Maximum number of messages to allow in flight (concurrency knob).
            Min: 0 Default: 1
            </summary>
        </member>
        <member name="P:NsqSharp.Config.MessageTimeout">
            <summary>The duration the server waits before auto-requeing a message sent to this client.
            Default = Use server settings (server default = 60s).
            </summary>
        </member>
        <member name="P:NsqSharp.Config.AuthSecret">
            <summary>Secret for nsqd authentication (requires nsqd 0.2.29+).
            See: https://github.com/bitly/nsq/pull/356, https://github.com/jehiah/nsqauth-contrib.
            </summary>
        </member>
        <member name="T:NsqSharp.Producer">
             <summary>
             <para>Producer is a high-level type to publish to NSQ.</para>
            
             <para>A Producer instance is 1:1 with a destination nsqd
             and will lazily connect to that instance (and re-connect)
             when Publish commands are executed.</para>
             <seealso cref="M:NsqSharp.Producer.Publish(System.String,System.String)"/>
             <seealso cref="M:NsqSharp.Producer.Publish(System.String,System.Byte[])"/>
             <seealso cref="M:NsqSharp.Producer.Stop"/>
             </summary>
        </member>
        <member name="M:NsqSharp.Producer.#ctor(System.String)">
            <summary>
            Initializes a new instance of the Producer class.
            </summary>
            <param name="nsqdAddress">The nsqd address.</param>
        </member>
        <member name="M:NsqSharp.Producer.#ctor(System.String,NsqSharp.Config)">
            <summary>
            Initializes a new instance of the Producer class.
            </summary>
            <param name="nsqdAddress">The nsqd address.</param>
            <param name="config">The config. After Config is passed in the values are
            no longer mutable (they are copied).</param>
        </member>
        <member name="M:NsqSharp.Producer.#ctor(System.String,NsqSharp.Core.ILogger)">
            <summary>
            Initializes a new instance of the Producer class.
            </summary>
            <param name="nsqdAddress">The nsqd address.</param>
            <param name="logger">
            The logger. Default = <see cref="T:NsqSharp.Utils.Loggers.ConsoleLogger"/>(<see cref="E:LogLevel.Info"/>).
            </param>
        </member>
        <member name="M:NsqSharp.Producer.#ctor(System.String,NsqSharp.Core.ILogger,NsqSharp.Config)">
            <summary>
            Initializes a new instance of the Producer class.
            </summary>
            <param name="nsqdAddress">The nsqd address.</param>
            <param name="logger">
            The logger. Default = <see cref="T:NsqSharp.Utils.Loggers.ConsoleLogger"/>(<see cref="E:LogLevel.Info"/>).
            </param>
            <param name="config">The config. Values are copied, changing the properties on <paramref name="config"/>
            after the constructor is called will have no effect on the <see cref="T:NsqSharp.Producer"/>.</param>
        </member>
        <member name="M:NsqSharp.Producer.ToString">
            <summary>Returns the address of the Producer.</summary>
            <returns>The address of the Producer.</returns>
        </member>
        <member name="M:NsqSharp.Producer.Stop">
             <summary>
             <para>Stop initiates a graceful stop of the Producer (permanent).</para>
            
             <para>NOTE: this blocks until completion</para>
             </summary>
        </member>
        <member name="M:NsqSharp.Producer.PublishAsync(System.String,System.Byte[],System.Object[])">
            <summary>
                <para>Publishes a message <paramref name="body"/> to the specified <paramref name="topic"/>
                but does not wait for the response from nsqd.</para>
                
                <para>When the Producer eventually receives the response from nsqd, the Task will return a
                <see cref="T:NsqSharp.ProducerResponse"/> instance with the supplied <paramref name="args"/> and the response error if
                present.</para>
            </summary>
            <param name="topic">The topic to publish to.</param>
            <param name="body">The message body.</param>
            <param name="args">A variable-length parameters list containing arguments. These arguments will be returned on
                <see cref="P:NsqSharp.ProducerResponse.Args"/>.
            </param>
            <returns>A Task&lt;ProducerResponse&gt; which can be awaited.</returns>
        </member>
        <member name="M:NsqSharp.Producer.PublishAsync(System.String,System.String,System.Object[])">
            <summary>
                <para>Publishes a string <paramref name="value"/> message to the specified <paramref name="topic"/>
                but does not wait for the response from nsqd.</para>
                
                <para>When the Producer eventually receives the response from nsqd, the Task will return a
                <see cref="T:NsqSharp.ProducerResponse"/> instance with the supplied <paramref name="args"/> and the response error if
                present.</para>
            </summary>
            <param name="topic">The topic to publish to.</param>
            <param name="value">The message body.</param>
            <param name="args">A variable-length parameters list containing arguments. These arguments will be returned on
                <see cref="P:NsqSharp.ProducerResponse.Args"/>.
            </param>
            <returns>A Task&lt;ProducerResponse&gt; which can be awaited.</returns>
        </member>
        <member name="M:NsqSharp.Producer.MultiPublishAsync(System.String,System.Collections.Generic.IEnumerable{System.Byte[]},System.Object[])">
            <summary>
                <para>Publishes a collection of message <paramref name="bodies"/> to the specified <paramref name="topic"/>
                but does not wait for the response from nsqd.</para>
                
                <para>When the Producer eventually receives the response from nsqd, the Task will return a
                <see cref="T:NsqSharp.ProducerResponse"/> instance with the supplied <paramref name="args"/> and the response error if
                present.</para>
            </summary>
            <param name="topic">The topic to publish to.</param>
            <param name="bodies">The collection of message bodies.</param>
            <param name="args">A variable-length parameters list containing arguments. These arguments will be returned on
                <see cref="P:NsqSharp.ProducerResponse.Args"/>.
            </param>
            <returns>A Task&lt;ProducerResponse&gt; which can be awaited.</returns>
        </member>
        <member name="M:NsqSharp.Producer.Publish(System.String,System.Byte[])">
            <summary>
                Synchronously publishes a message <paramref name="body"/> to the specified <paramref name="topic"/>, throwing
                an exception if publish failed.
            </summary>
            <param name="topic">The topic to publish to.</param>
            <param name="body">The message body.</param>
        </member>
        <member name="M:NsqSharp.Producer.Publish(System.String,System.String)">
            <summary>
                Synchronously publishes string <paramref name="value"/> message to the specified <paramref name="topic"/>,
                throwing an exception if publish failed.
            </summary>
            <param name="topic">The topic to publish to.</param>
            <param name="value">The message body.</param>
        </member>
        <member name="M:NsqSharp.Producer.MultiPublish(System.String,System.Collections.Generic.IEnumerable{System.Byte[]})">
            <summary>
                Synchronously publishes a collection of message <paramref name="bodies"/> to the specified
                <paramref name="topic"/>, throwing an exception if publish failed.
            </summary>
            <param name="topic">The topic to publish to.</param>
            <param name="bodies">The collection of message bodies.</param>
        </member>
        <member name="M:NsqSharp.Producer.Connect">
            <summary>
                Connects to nsqd. Calling this method is optional; otherwise, Connect will be lazy invoked when Publish is
                called.
            </summary>
            <exception cref="T:NsqSharp.Core.ErrStopped">Thrown if the Producer has been stopped.</exception>
            <exception cref="T:NsqSharp.Core.ErrNotConnected">Thrown if the Producer is currently waiting to close and reconnect.</exception>
        </member>
        <member name="T:NsqSharp.ProducerResponse">
            <summary>
            ProducerResponse is returned by the async publish methods
            to retrieve metadata about the command after the
            response is received.
            </summary>
        </member>
        <member name="P:NsqSharp.ProducerResponse.Error">
            <summary>
            the error (or nil) of the publish command
            </summary>
        </member>
        <member name="P:NsqSharp.ProducerResponse.Args">
            <summary>
            the slice of variadic arguments passed to PublishAsync or MultiPublishAsync
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Extensions.DateTimeExtensions">
            <summary>
            <see cref="T:System.DateTime"/> extension methods.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Extensions.DateTimeExtensions.UnixNano(System.DateTime)">
            <summary>
            UnixNano returns t as a Unix time, the number of nanoseconds elapsed since January 1, 1970 UTC. The result is
            undefined if the Unix time in nanoseconds cannot be represented by an int64. Note that this means the result of
            calling UnixNano on the zero Time is undefined.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Extensions.DateTimeExtensions.Unix(System.DateTime)">
            <summary>
            Unix returns t as a Unix time, the number of seconds elapsed since January 1, 1970 UTC.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Extensions.ObjectExtensions">
            <summary>
            <see cref="T:System.Object"/> extension methods.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Extensions.ObjectExtensions.Coerce``1(System.Object)">
            <summary>
            Coerce a value to the specified type <typeparamref name="T"/>. Supports Duration and Bool string/int formats.
            </summary>
            <typeparam name="T">The target type.</typeparam>
            <param name="value">The value to coerce.</param>
            <returns>The value as type <typeparamref name="T"/>.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Extensions.ObjectExtensions.Coerce(System.Object,System.Type)">
            <summary>
            Coerce a value to the specified <paramref name="targetType"/>. Supports Duration and Bool string/int formats.
            </summary>
            <param name="value">The value to coerce.</param>
            <param name="targetType">The target type.</param>
            <returns>The value as the <paramref name="targetType"/>.</returns>
        </member>
        <member name="T:NsqSharp.Utils.Extensions.OptAttributeExtensions">
            <summary>
            <see cref="T:NsqSharp.Utils.Attributes.OptAttribute"/> extension methods.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Extensions.OptAttributeExtensions.Coerce(NsqSharp.Utils.Attributes.OptAttribute,System.Object,System.Type)">
            <summary>
            Coerce a value to the specified <paramref name="targetType"/>. Supports Duration and Bool string/int formats.
            </summary>
            <param name="opt">The <see cref="P:NsqSharp.Utils.Attributes.OptAttribute.Name"/> to throw in the exception if coerce fails.</param>
            <param name="value">The value to coerce.</param>
            <param name="targetType">The target type.</param>
            <returns>The value as the <paramref name="targetType"/>.</returns>
        </member>
        <member name="T:NsqSharp.Utils.Extensions.PropertyInfoExtensions">
            <summary>
            <see cref="T:System.Reflection.PropertyInfo"/> extension methods.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Extensions.PropertyInfoExtensions.Get``1(System.Reflection.PropertyInfo)">
            <summary>
            Gets the specified <paramref name="propertyInfo"/> attribute of type <typeparamref name="T"/>.
            </summary>
            <typeparam name="T">The attribute type.</typeparam>
            <param name="propertyInfo">The <see cref="T:System.Reflection.PropertyInfo"/>.</param>
            <returns>The attribute, or <c>null</c>.</returns>
        </member>
        <member name="T:NsqSharp.Utils.Extensions.RNGCryptoServiceProviderExtensions">
            <summary>
            <see cref="T:System.Security.Cryptography.RNGCryptoServiceProvider"/> extension methods.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Extensions.RNGCryptoServiceProviderExtensions.Float64(System.Security.Cryptography.RNGCryptoServiceProvider)">
            <summary>
            Gets a cryptographically secure double in [0,1).
            </summary>
            <param name="rng">The <see cref="T:System.Security.Cryptography.RNGCryptoServiceProvider"/>.</param>
            <returns>A cryptographically secure double.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Extensions.RNGCryptoServiceProviderExtensions.Intn(System.Security.Cryptography.RNGCryptoServiceProvider,System.Int32)">
            <summary>
            Intn returns, as an int, a non-negative cryptographically secure random number in [0,<paramref name="n"/>).
            </summary>
            <param name="rng">The <see cref="T:System.Security.Cryptography.RNGCryptoServiceProvider"/>.</param>
            <param name="n">The exclusive upper bound. Must be &gt; 0.</param>
            <returns>A cryptographically secure integer in [0,<paramref name="n"/>).</returns>
        </member>
        <member name="M:NsqSharp.Utils.Extensions.RNGCryptoServiceProviderExtensions.Int(System.Security.Cryptography.RNGCryptoServiceProvider)">
            <summary>
            Int returns a non-negative cryptographically secure random number.
            </summary>
            <param name="rng">The <see cref="T:System.Security.Cryptography.RNGCryptoServiceProvider"/>.</param>
            <returns>A cryptographically secure integer.</returns>
        </member>
        <member name="T:NsqSharp.Utils.Extensions.TimeSpanExtensions">
            <summary>
            <see cref="T:System.TimeSpan"/> extension methods.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Extensions.TimeSpanExtensions.Nanoseconds(System.TimeSpan)">
            <summary>
            Gets the <paramref name="timeSpan"/> as nanoseconds.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.GoFunc">
            <summary>
            Go routines
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.GoFunc.Run(System.Action,System.String)">
            <summary>
            Run a new "goroutine".
            </summary>
            <param name="action">The method to execute.</param>
            <param name="threadName">The name to assign to the thread (optional).</param>
        </member>
        <member name="T:NsqSharp.Utils.IConn">
            <summary>
            IConn interface. http://golang.org/pkg/net/#Conn
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.IConn.Close">
            <summary>
            Close closes the connection.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.ITcpConn">
            <summary>
            ITcpConn interface. http://golang.org/pkg/net/#TCPConn
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.ITcpConn.Flush">
            <summary>
            Flush writes all buffered data to the underlying TCP connection
            </summary>
        </member>
        <member name="P:NsqSharp.Utils.ITcpConn.ReadTimeout">
            <summary>
            Gets or sets the read timeout.
            </summary>
        </member>
        <member name="P:NsqSharp.Utils.ITcpConn.WriteTimeout">
            <summary>
            Gets or sets the write timeout.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Net">
            <summary>
            Net package. http://golang.org/pkg/net
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Net.Dial(System.String,System.String)">
            <summary>
            Dial connects to the address on the named network.
            
            Known networks are "tcp" only at this time.
            
            Addresses have the form host:port. If host is a literal IPv6 address it must be enclosed in square brackets as in
            "[::1]:80" or "[ipv6-host%zone]:80". The functions JoinHostPort and SplitHostPort manipulate addresses in this form.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Net.DialTimeout(System.String,System.String,System.TimeSpan)">
            <summary>
            DialTimeout acts like Dial but takes a timeout. The timeout includes name resolution, if required.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Once">
            <summary>
            Once is an object that will perform exactly one action.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Once.Do(System.Action)">
            <summary>
            Do calls the function f if and only if Do is being called for the first time for this instance of Once.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.OS">
            <summary>
            OS Package. http://golang.org/pkg/os
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.OS.Hostname">
            <summary>
            Returns the host name
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Slice`1">
            <summary>
            Slice
            </summary>
            <typeparam name="T">The type of data stored in the slice</typeparam>
        </member>
        <member name="M:NsqSharp.Utils.Slice`1.#ctor(System.String)">
            <summary>
            Initializes a new Slice from a string
            </summary>
            <param name="value">The string</param>
        </member>
        <member name="M:NsqSharp.Utils.Slice`1.#ctor(`0[])">
            <summary>
            Initializes a new Slice from an array.
            </summary>
            <param name="array"></param>
        </member>
        <member name="M:NsqSharp.Utils.Slice`1.Slc(System.Int32)">
            <summary>
            Creates a new slice starting at <paramref name="start"/> and going to the end.
            </summary>
            <param name="start">The start index.</param>
            <returns>A new slice.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Slice`1.Slc(System.Int32,System.Int32)">
            <summary>
            Creates a new slice starting at <paramref name="start"/> and going to <paramref name="end"/>, exclusive.
            </summary>
            <param name="start">The start index.</param>
            <param name="end">The end index + 1. (ex: Slc(2, 5) returns a new slice of length 3 going from index 2 to 4)</param>
            <returns>A new slice.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Slice`1.ToString">
            <summary>
            Returns the string if the slice is of type Slice&lt;char&gt; otherwise, returns a string representing the array.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Slice`1.ToArray">
            <summary>
            Returns the slice as an array.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Slice`1.Len">
            <summary>
            Returns the length of the slice.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Slice`1.op_Equality(NsqSharp.Utils.Slice{`0},System.String)">
            <summary>
            Checks if a slice and string are equal.
            </summary>
            <param name="s1">The first slice.</param>
            <param name="s2">The second slice.</param>
            <returns><c>true</c> if the slice and string are equal; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Slice`1.op_Inequality(NsqSharp.Utils.Slice{`0},System.String)">
            <summary>
            Checks if a slice and string are not equal.
            </summary>
            <param name="s1">The first slice.</param>
            <param name="s2">The second slice.</param>
            <returns><c>true</c> if the slice and string are not equal; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Slice`1.Equals(System.Object)">
            <summary>
            Compares strings and references, otherwise always returns <c>false</c>. This implementation may change.
            </summary>
            <param name="obj">The object to check equality with.</param>
            <returns><c>true</c> if the strings or references are equal; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Slice`1.GetHashCode">
            <summary>
            Default GetHashCode implementation.
            </summary>
        </member>
        <member name="P:NsqSharp.Utils.Slice`1.Item(System.Int32)">
            <summary>
            Gets the data at the specified index.
            </summary>
            <param name="index">The index of the data to return.</param>
        </member>
        <member name="T:NsqSharp.Utils.Ticker">
            <summary>
            A Ticker holds a channel that delivers `ticks' of a clock at intervals. http://golang.org/pkg/time/#Ticker
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Ticker.#ctor(System.TimeSpan)">
            <summary>
            Initializes a new instance of the Ticker class.
            </summary>
            <param name="duration">The interval between ticks on the channel.</param>
        </member>
        <member name="M:NsqSharp.Utils.Ticker.Stop">
            <summary>
            Stop turns off a ticker. After Stop, no more ticks will be sent. Stop does not close the channel,
            to prevent a read from the channel succeeding incorrectly. See <see cref="M:NsqSharp.Utils.Ticker.Close"/>.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Ticker.Close">
            <summary>
            Stops the ticker and closes the channel, exiting the ticker thread. Note: after closing a channel,
            all reads from the channel will return default(T). See <see cref="M:NsqSharp.Utils.Ticker.Stop"/>.
            </summary>
        </member>
        <member name="P:NsqSharp.Utils.Ticker.C">
            <summary>
            The channel on which the ticks are delivered.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Time">
            <summary>
            Package time provides functionality for measuring and displaying time.
            </summary>
        </member>
        <member name="F:NsqSharp.Utils.Time.Nanosecond">
            <summary>Nanosecond</summary>
        </member>
        <member name="F:NsqSharp.Utils.Time.Microsecond">
            <summary>Microsecond</summary>
        </member>
        <member name="F:NsqSharp.Utils.Time.Millisecond">
            <summary>Millisecond</summary>
        </member>
        <member name="F:NsqSharp.Utils.Time.Second">
            <summary>Second</summary>
        </member>
        <member name="F:NsqSharp.Utils.Time.Minute">
            <summary>Minute</summary>
        </member>
        <member name="F:NsqSharp.Utils.Time.Hour">
            <summary>Hour</summary>
        </member>
        <member name="M:NsqSharp.Utils.Time.After(System.TimeSpan)">
            <summary>
            Creates a channel which fires after the specified timeout.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Time.AfterFunc(System.TimeSpan,System.Action)">
            <summary>
            AfterFunc waits for the duration to elapse and then calls f in its own goroutine.
            It returns a <see cref="T:NsqSharp.Utils.Timer"/> that can be used to cancel the call using its Stop method.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Time.Unix(System.Int64,System.Int64)">
            <summary>
            Unix returns the local Time corresponding to the given Unix time,
            sec seconds and nsec nanoseconds since January 1, 1970 UTC.
            It is valid to pass nsec outside the range [0, 999999999].
            </summary>
            <param name="sec">The number of seconds.</param>
            <param name="nsec">The number of nanoseconds.</param>
            <returns>The <see cref="T:System.DateTime"/> specified in local time.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Time.leadingInt(NsqSharp.Utils.Slice{System.Char}@)">
            <summary>
            leadingInt consumes the leading [0-9]* from s.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Time.ParseDuration(System.String)">
            <summary>
            ParseDuration parses a duration string.
            A duration string is a possibly signed sequence of
            decimal numbers, each with optional fraction and a unit suffix,
            such as "300ms", "-1.5h" or "2h45m".
            Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
            </summary>
            <param name="value">The value to parse.</param>
            <returns>The parsed duration.</returns>
        </member>
        <member name="M:NsqSharp.Utils.Time.Duration(System.Int64)">
            <summary>
            Converts nanoseconds to <see cref="T:System.TimeSpan"/>.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.Timer">
            <summary>
            The <see cref="T:NsqSharp.Utils.Timer"/> type represents a single event. When the <see cref="T:NsqSharp.Utils.Timer"/> expires, the current time
            will be sent on <see cref="P:NsqSharp.Utils.Timer.C"/>, unless the <see cref="T:NsqSharp.Utils.Timer"/> was created by <see cref="M:NsqSharp.Utils.Time.AfterFunc(System.TimeSpan,System.Action)"/>.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Timer.#ctor(System.TimeSpan)">
            <summary>
            Creates a new <see cref="T:NsqSharp.Utils.Timer"/> that will send the current time on its channel <see cref="P:NsqSharp.Utils.Timer.C"/> after at least
            <paramref name="duration"/>.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.Timer.Stop">
            <summary>
            Stop prevents the Timer from firing. It returns <c>true</c> if the call stops the timer, <c>false</c> if the timer
            has already expired or been stopped. Stop does not close the channel, to prevent a read from the channel succeeding
            incorrectly.
            </summary>
        </member>
        <member name="P:NsqSharp.Utils.Timer.C">
            <summary>
            The channel the Timer will fire on after the duration.
            </summary>
        </member>
        <member name="T:NsqSharp.Utils.TlsConfig">
            <summary>
            TlsConfig. Minimal implementation of http://golang.org/pkg/crypto/tls/#Config
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.TlsConfig.#ctor">
            <summary>
            Initializes a new instance of the TlsConfig class.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.TlsConfig.GetEnabledSslProtocols">
            <summary>
            Gets the enabled <see cref="T:System.Security.Authentication.SslProtocols"/> based on <see cref="P:NsqSharp.Utils.TlsConfig.MinVersion"/>.
            </summary>
            <returns>The enabled <see cref="T:System.Security.Authentication.SslProtocols"/>.</returns>
        </member>
        <member name="P:NsqSharp.Utils.TlsConfig.MinVersion">
            <summary>
            Minimum TLS version (default = TLS 1.2 for .NET 4.5 and higher, TLS 1.0 for .NET 4.0 and lower).
            </summary>
        </member>
        <member name="P:NsqSharp.Utils.TlsConfig.InsecureSkipVerify">
            <summary>
            InsecureSkipVerify controls whether a client verifies the
            server's certificate chain and host name.
            If InsecureSkipVerify is true, TLS accepts any certificate
            presented by the server and any host name in that certificate.
            In this mode, TLS is susceptible to man-in-the-middle attacks.
            This should be used only for testing.
            
            Overrides <see cref="P:NsqSharp.Utils.TlsConfig.CheckCertificateRevocation"/>.
            </summary>
        </member>
        <member name="P:NsqSharp.Utils.TlsConfig.CheckCertificateRevocation">
            <summary>Gets or sets a value indicating whether to check certificate revocation (default = true).</summary>
            <value>true if certificate revocation should be checked, false if not.</value>
        </member>
        <member name="T:NsqSharp.Utils.WaitGroup">
            <summary>
            A WaitGroup waits for a collection of routines to finish. The main routine calls Add to set the number of routines to
            wait for. Then each of the routines runs and calls Done when finished. At the same time, Wait can be used to block until
            all routines have finished. See: http://golang.org/pkg/sync/#WaitGroup
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.WaitGroup.Add(System.Int32)">
             <summary>
             Add adds delta, which may be negative, to the WaitGroup counter. If the counter becomes zero, all goroutines blocked
             on Wait are released. If the counter goes negative, Add panics.
            
             Note that calls with a positive delta that occur when the counter is zero must happen before a Wait. Calls with a
             negative delta, or calls with a positive delta that start when the counter is greater than zero, may happen at any
             time. Typically this means the calls to Add should execute before the statement creating the routine or other event
             to be waited for.
             </summary>
             <param name="delta"></param>
        </member>
        <member name="M:NsqSharp.Utils.WaitGroup.Done">
            <summary>
            Done decrements the WaitGroup counter.
            </summary>
        </member>
        <member name="M:NsqSharp.Utils.WaitGroup.Wait">
            <summary>
            Wait blocks until the WaitGroup counter is zero.
            </summary>
        </member>
    </members>
</doc>
