Exemplo n.º 1
0
 public ListenerRegistration(Guid userRegistrationId, ClientMessage registrationRequest = null,
                             DecodeRegisterResponse decodeRegisterResponse = null, EncodeDeregisterRequest encodeDeregisterRequest = null,
                             DistributedEventHandler eventHandler          = null)
 {
     UserRegistrationId      = userRegistrationId;
     RegistrationRequest     = registrationRequest;
     EncodeDeregisterRequest = encodeDeregisterRequest;
     DecodeRegisterResponse  = decodeRegisterResponse;
     EventHandler            = eventHandler;
 }
Exemplo n.º 2
0
 public ListenerRegistration(string userRegistrationId, IClientMessage registrationRequest = null,
                             DecodeRegisterResponse decodeRegisterResponse = null, EncodeDeregisterRequest encodeDeregisterRequest = null,
                             DistributedEventHandler eventHandler          = null)
 {
     UserRegistrationId      = userRegistrationId;
     RegistrationRequest     = registrationRequest;
     EncodeDeregisterRequest = encodeDeregisterRequest;
     DecodeRegisterResponse  = decodeRegisterResponse;
     EventHandler            = eventHandler;
     ConnectionRegistrations = new ConcurrentDictionary <ClientConnection, EventRegistration>();
 }
Exemplo n.º 3
0
        public string RegisterListener(IClientMessage registrationMessage, DecodeRegisterResponse responseDecoder,
                                       EncodeDeregisterRequest encodeDeregisterRequest, DistributedEventHandler eventHandler)
        {
            //This method should not be called from registrationExecutor
            Debug.Assert(Thread.CurrentThread.Name == null || !Thread.CurrentThread.Name.Contains("eventRegistration"));

            TrySyncConnectToAllConnections();
            var registrationTask = new Task <string>(() =>
            {
                var userRegistrationId = Guid.NewGuid().ToString();

                var listenerRegistration = new ListenerRegistration(userRegistrationId, registrationMessage, responseDecoder,
                                                                    encodeDeregisterRequest, eventHandler);

                _registrations.TryAdd(userRegistrationId, listenerRegistration);

                var connections = _connectionManager.ActiveConnections;
                foreach (var connection in connections)
                {
                    try
                    {
                        RegisterListenerOnConnection(listenerRegistration, connection);
                    }
                    catch (Exception e)
                    {
                        if (connection.Live)
                        {
                            DeregisterListenerInternal(userRegistrationId);
                            throw new HazelcastException("Listener cannot be added ", e);
                        }
                    }
                }
                return(userRegistrationId);
            });

            try
            {
                registrationTask.Start(_registrationScheduler);
                return(registrationTask.Result);
            }
            catch (Exception e)
            {
                throw ExceptionUtil.Rethrow(e);
            }
        }
Exemplo n.º 4
0
 protected virtual Guid RegisterListener(ClientMessage registrationMessage, DecodeRegisterResponse responseDecoder,
                                         EncodeDeregisterRequest encodeDeregisterRequest, DistributedEventHandler eventHandler)
 {
     return(Client.ListenerService
            .RegisterListener(registrationMessage, responseDecoder, encodeDeregisterRequest, eventHandler));
 }
Exemplo n.º 5
0
 protected virtual string RegisterListener(IClientMessage registrationMessage, DecodeRegisterResponse responseDecoder,
                                           EncodeDeregisterRequest encodeDeregisterRequest, DistributedEventHandler eventHandler)
 {
     return(_context.GetListenerService()
            .RegisterListener(registrationMessage, responseDecoder, encodeDeregisterRequest, eventHandler));
 }