internal MessageClient(string clientId, MessageDestination messageDestination, string endpointId, bool useSession) { SetIsValid(true); _clientId = clientId; Debug.Assert(messageDestination != null); _messageDestination = messageDestination; _endpointId = endpointId; if (useSession) { _session = FluorineContext.Current.Session as Session; if (_session != null) _session.RegisterMessageClient(this); _client = FluorineContext.Current.Client; Debug.Assert(_client != null); _client.RegisterMessageClient(this); } else { _session = null; _client = null; } if (log.IsDebugEnabled) { string msg = string.Format("MessageClient created with clientId {0} for destination {1}", _clientId, _messageDestination.Id); log.Debug(msg); } }
internal void ResetEndpoint(string endpointId) { string oldEndpointId = null; Session oldSession = null; Session newSession = FluorineContext.Current.Session as Session; lock (this.SyncRoot) { // If anything is null, or nothing has changed, no need for a reset. if (_endpointId == null || endpointId == null || _session == null || newSession == null || (_endpointId.Equals(endpointId) && _session.Equals(newSession))) return; oldEndpointId = _endpointId; _endpointId = endpointId; oldSession = _session; _session = newSession; } // Unregister in order to reset the proper push settings in the re-registration below once the session association has been patched. if (_client != null) _client.UnregisterMessageClient(this); // Clear out any reference to this subscription that the previously associated session has. if (oldSession != null) oldSession.UnregisterMessageClient(this); // Associate the current session with this subscription. if (_session != null) _session.RegisterMessageClient(this); // Reset proper push settings. if (_client != null) _client.RegisterMessageClient(this); if (log.IsDebugEnabled) { string msg = string.Format("MessageClient created with clientId {0} for destination {1} has been reset as a result of a resubscribe.", _clientId, _messageDestination.Id); if (oldEndpointId != null && !oldEndpointId.Equals(endpointId)) msg += " Endpoint changed from " + oldEndpointId + " to " + endpointId; if ((oldSession != null) && (newSession != null) && (oldSession != newSession)) msg += " Session changed from " + oldSession.Id + " to " + newSession.Id; log.Debug(msg); } }