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); } } } }
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)); } } } } }