Exemple #1
0
        private void GetMessageIdentifiers(SqlConnection connection, EventMessageIdentifiers identifiers, Filter eventFilter)
        {
            using (var command = new SqlCommand(Sql.GetMessageIdentifierRangeFilter, connection))
            {
                command.CommandType = CommandType.StoredProcedure;

                // The stored procedure takes a time (in ticks) as parameter instead of message ID, because
                // messages in the database are not necessarily ordered by ID.

                command.Parameters.Add("@fromTime", SqlDbType.BigInt).Value     = _lastReadMessageTime;
                command.Parameters.Add("@eventFilter", SqlDbType.VarChar).Value = SqlUtil.RegexToSqlLike(eventFilter.Pattern.Value);

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        _lastReadMessageTime = reader.GetInt64(1);
                        int id = reader.GetInt32(0);

                        EventMessageIdentifier identifier = new SqlEventMessageIdentifier(id, _lastReadMessageTime);
                        identifiers.Add(identifier);
                    }
                }
            }
        }
Exemple #2
0
        private void GetMessages(EventMessages messages, SqlEventMessageIdentifier sqlStartIdentifier, SqlEventMessageIdentifier sqlEndIdentifier)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                using (var command = new SqlCommand(Sql.GetMessageTimeRange, connection))
                {
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.Add("@fromTime", SqlDbType.BigInt).Value = sqlStartIdentifier.Time;
                    command.Parameters.Add("@toTime", SqlDbType.BigInt).Value   = sqlEndIdentifier.Time;

                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            messages.Add(ReadMessage(reader));
                        }
                    }
                }
            }
        }