Diffusion .NET Client Library  6.1.5
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Events Pages
PushTechnology.ClientInterface.Client.Session.CloseReason Class Reference

The server's view of why a session was closed. More...

Inheritance diagram for PushTechnology.ClientInterface.Client.Session.CloseReason:

Static Public Attributes

static readonly CloseReason CONNECTION_LOST = new CloseReason( CloseReasonEnum.CONNECTION_LOST )
 The connection to the client was lost - possibly dropped by the client. Recoverable. More...
 
static readonly CloseReason IO_EXCEPTION = new CloseReason( CloseReasonEnum.IO_EXCEPTION )
 An unexpected IO Exception occurred. Recoverable. More...
 
static readonly CloseReason CLIENT_UNRESPONSIVE = new CloseReason( CloseReasonEnum.CLIENT_UNRESPONSIVE )
 The client had become unresponsive. More...
 
static readonly CloseReason MESSAGE_QUEUE_LIMIT_REACHED
 The maximum outbound queue size was reached for the client. Not recoverable. More...
 
static readonly CloseReason CLOSED_BY_CLIENT = new CloseReason( CloseReasonEnum.CLOSED_BY_CLIENT )
 The client requested close. Not recoverable (unless TEST_RECONNECT is true). More...
 
static readonly CloseReason MESSAGE_TOO_LARGE = new CloseReason( CloseReasonEnum.MESSAGE_TOO_LARGE )
 The client sent a message that exceeded the maximum message size. More...
 
static readonly CloseReason INTERNAL_ERROR = new CloseReason( CloseReasonEnum.INTERNAL_ERROR )
 An internal error occurred. More...
 
static readonly CloseReason INVALID_INBOUND_MESSAGE
 An inbound message with an invalid format was received. More...
 
static readonly CloseReason ABORTED = new CloseReason( CloseReasonEnum.ABORTED )
 The client connection was aborted by the server, possibly because the connection was disallowed. More...
 
static readonly CloseReason LOST_MESSAGES = new CloseReason( CloseReasonEnum.LOST_MESSAGES )
 Loss of messages from the client has been detected. For example, whilst waiting for the arrival of missing messages in a sequence of messages a timeout has occurred. More...
 
static readonly CloseReason SERVER_CLOSING = new CloseReason( CloseReasonEnum.SERVER_CLOSING )
 The server is closing down. More...
 
static readonly CloseReason CLOSED_BY_CONTROLLER = new CloseReason( CloseReasonEnum.CLOSED_BY_CONTROLLER )
 Closed by controller (a client or a publisher). More...
 
static readonly CloseReason FAILED_OVER = new CloseReason( CloseReasonEnum.FAILED_OVER )
 The session has failed over to a different Diffusion server. More...
 

Detailed Description

The server's view of why a session was closed.

This differs from the state of the session; the state is only loosely related to the reason behind the close.

Member Data Documentation

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.ABORTED = new CloseReason( CloseReasonEnum.ABORTED )
static

The client connection was aborted by the server, possibly because the connection was disallowed.

Abort messages are also sent to clients that have unrecognised client IDs. This may be ecause the server closed the client previously but the client is unaware of this and tried to continue interacting with the server.

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.CLIENT_UNRESPONSIVE = new CloseReason( CloseReasonEnum.CLIENT_UNRESPONSIVE )
static

The client had become unresponsive.

The client has either failed to respond to a ping message in a timely manner or the client has failed to open an HTTP poll for messages. The client does not appear to be receiving messages.

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.CLOSED_BY_CLIENT = new CloseReason( CloseReasonEnum.CLOSED_BY_CLIENT )
static

The client requested close. Not recoverable (unless TEST_RECONNECT is true).

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.CLOSED_BY_CONTROLLER = new CloseReason( CloseReasonEnum.CLOSED_BY_CONTROLLER )
static

Closed by controller (a client or a publisher).

A controller initiated the client close.

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.CONNECTION_LOST = new CloseReason( CloseReasonEnum.CONNECTION_LOST )
static

The connection to the client was lost - possibly dropped by the client. Recoverable.

A client may be closed for may reasons that are presented as CONNECTION_LOST.

During connection the connection can be lost. The server might have received a connection or reconnection request from a client already connected. The server might have received a reconnection request without a client ID. The connection may not have been authorised because the credentials are wrong. The maximum number of clients might already be connected.

Once connected the connection can be lost for different reasons. If the client closes its connection while the server is writing a message to the client. With the chunked encoding based connection the HTTP response is completed by the server. If the client does not open a new request within a timeout the client will be closed. If a poll request times out and the server finds that the connection has already been closed by the client.

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.FAILED_OVER = new CloseReason( CloseReasonEnum.FAILED_OVER )
static

The session has failed over to a different Diffusion server.

The session is still open but is now connected to a different Diffusion server. This server has evicted its view of the session from its set of local sessions.

This reason is only sent to clients that register a ISessionPropertiesListener. Clients that have registered a ISessionDetailsListener or that use an earlier version of the API, released before 5.8, will receive the CLOSED_BY_CONTROLLER reason instead.



Since 5.8

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.INTERNAL_ERROR = new CloseReason( CloseReasonEnum.INTERNAL_ERROR )
static

An internal error occurred.

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.INVALID_INBOUND_MESSAGE
static
Initial value:
=
new CloseReason( CloseReasonEnum.INVALID_INBOUND_MESSAGE )

An inbound message with an invalid format was received.

A message received by the server is not a valid Diffusion message. The server is unable to process this and closes the client that sent it.

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.IO_EXCEPTION = new CloseReason( CloseReasonEnum.IO_EXCEPTION )
static

An unexpected IO Exception occurred. Recoverable.

While trying to perform an I/O operation an exception was generated. This often means that a read was attempted from a closed TCP connection.

This may happen if a message that is larger than the input buffer of the connector is received. The message cannot be read so the client is closed.

When handling SSL connections if there is a problem encrypting or decrypting a message the client will be closed for this reason.

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.LOST_MESSAGES = new CloseReason( CloseReasonEnum.LOST_MESSAGES )
static

Loss of messages from the client has been detected. For example, whilst waiting for the arrival of missing messages in a sequence of messages a timeout has occurred.

HTTP based transports use multiple TCP connections. This can cause the messages to be received out of order. To reorder the messages those sent to the server may contain a sequence number indicating the correct order.

If a message is received out of order there is a short time for the earlier messages to be received. If the messages are not received in this time the client is closed.

Missing, invalid or duplicate sequence numbers will also close the client for this reason.

This cannot be recovered from as the client and the server are in inconsistent states.

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.MESSAGE_QUEUE_LIMIT_REACHED
static
Initial value:
=
new CloseReason( CloseReasonEnum.MESSAGE_QUEUE_LIMIT_REACHED )

The maximum outbound queue size was reached for the client. Not recoverable.

Messages sent to the client are placed in a queue. This queue has a maximum allowed size. If the queue limit is reached the client is closed and the queue discarded. The queue is intended to protect against slow patches, reaching the queue limit is taken to mean that the client cannot keep up with the number of messages sent to it.

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.MESSAGE_TOO_LARGE = new CloseReason( CloseReasonEnum.MESSAGE_TOO_LARGE )
static

The client sent a message that exceeded the maximum message size.

The server has a maximum message size. If a client sends a message larger than this the server is unable to process it. When this happens the message is discarded and the client is closed.

readonly CloseReason PushTechnology.ClientInterface.Client.Session.CloseReason.SERVER_CLOSING = new CloseReason( CloseReasonEnum.SERVER_CLOSING )
static

The server is closing down.

The client was closed as part of the server shutdown process.


The documentation for this class was generated from the following file: