Esempio n. 1
0
        public ServiceEnvironmentEventListener ListenForEvents(params ServiceEnvironmentEventType[] eventTypes)
        {
            ServiceEnvironmentEventListener listener = new ServiceEnvironmentEventListener(this, eventTypes);

            RegisterEventListener(listener);
            return(listener);
        }
Esempio n. 2
0
        internal void UnregisterEventListener(ServiceEnvironmentEventListener listener)
        {
            var env = EnvironmentConfiguration;

            using (var connection = new SqlConnection(env.ConnectionString))
            {
                connection.Open();
                var command = new SqlCommand(env.SP_EnvironmentEventListenerUnregister, connection)
                {
                    CommandType = CommandType.StoredProcedure
                };
                command.Parameters.AddWithValue("@listenerID", listener.ListenerID.ToString("N"));
                command.ExecuteNonQuery();
            }
        }
Esempio n. 3
0
        internal void RegisterEventListener(ServiceEnvironmentEventListener listener)
        {
            var env = EnvironmentConfiguration;

            using (var connection = new SqlConnection(env.ConnectionString))
            {
                connection.Open();
                using (SqlTransaction transaction = connection.BeginTransaction())
                {
                    try
                    {
                        var command = new SqlCommand(env.SP_EnvironmentEventListenerRegister, connection, transaction)
                        {
                            CommandType = CommandType.StoredProcedure
                        };

                        foreach (ServiceEnvironmentEventType eventType in listener.EventTypes)
                        {
                            command.Parameters.AddWithValue("@listenerID", listener.ListenerID.ToString("N"));
                            command.Parameters.AddWithValue("@eventType", eventType.ToString());
                            command.Parameters.AddWithValue("@endpointName", listener.WcfHost.Description.Endpoints.First(endpoint => endpoint.Name == typeof(ServiceEnvironmentEventListener).FullName).Name);
                            command.Parameters.AddWithValue("@endpointAddress", listener.WcfHost.Description.Endpoints.First(endpoint => endpoint.Name == typeof(ServiceEnvironmentEventListener).FullName).Address.ToString());

                            command.ExecuteNonQuery();
                        }

                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        try { transaction.Rollback(); }
                        catch { }

                        listener.Close(false);

                        throw new ServiceEnvironmentException("Could not register listener in environment database. The listener has been closed. See inner exception for details.", ex);
                    }
                }
            }
        }