protected virtual string RegisterListener(IClientMessage registrationMessage, DecodeRegistrationResponse responseDecoder, EncodeDeregisterListenerRequest encodeDeregisterListenerRequest, DistributedEventHandler eventHandler) { return(_context.GetListenerService() .RegisterListener(registrationMessage, responseDecoder, encodeDeregisterListenerRequest, eventHandler)); }
public ListenerRegistrationKey(string userRegistrationId, IClientMessage registrationRequest = null, DecodeRegistrationResponse responseDecoder = null, DistributedEventHandler eventHandler = null) { UserRegistrationId = userRegistrationId; RegistrationRequest = registrationRequest; ResponseDecoder = responseDecoder; EventHandler = eventHandler; }
public string RegisterListener(IClientMessage registrationMessage, DecodeRegistrationResponse responseDecoder, EncodeDeregisterListenerRequest encodeDeregisterListenerRequest, DistributedEventHandler eventHandler) { Debug.Assert(!Thread.CurrentThread.Name.Contains("eventRegistration")); TrySyncConnectToAllConnections(); var registrationTask = new Task <string>(() => { var userRegistrationId = Guid.NewGuid().ToString(); var registrationKey = new ListenerRegistrationKey(userRegistrationId, registrationMessage, responseDecoder, eventHandler); _registrations.TryAdd(registrationKey, new ConcurrentDictionary <ClientConnection, EventRegistration>()); var connections = _connectionManager.ActiveConnections; foreach (var connection in connections) { try { RegisterListenerOnConnection(registrationKey, connection); } catch (Exception e) { if (connection.Live) { DeregisterListenerInternal(userRegistrationId, encodeDeregisterListenerRequest); throw new HazelcastException("Listener cannot be added ", e); } } } return(userRegistrationId); }); try { registrationTask.Start(_registrationScheduler); return(registrationTask.Result); } catch (Exception e) { throw ExceptionUtil.Rethrow(e); } }