68 lines
3.5 KiB
C#
68 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Npgsql;
|
|
using NpgsqlTypes;
|
|
using skyscraper5.DsmCc.Descriptors;
|
|
|
|
namespace skyscraper5.Data.PostgreSql
|
|
{
|
|
public partial class PostgresqlDataStore
|
|
{
|
|
public void StoreDsmCcDoItNowEvent(DateTime value, int currentNetworkId, int currentTransportStreamId, int programNumber, StreamEventDescriptor descriptorListStreamEventDescriptor, int pid)
|
|
{
|
|
EnqueueTask(x => WriteDsmCcDoItNowEvent(x, value, currentNetworkId, currentTransportStreamId, programNumber, descriptorListStreamEventDescriptor, pid));
|
|
}
|
|
|
|
private void WriteDsmCcDoItNowEvent(NpgsqlConnection conn, DateTime value, int currentNetworkId, int currentTransportStreamId, int programNumber, StreamEventDescriptor descriptorListStreamEventDescriptor, int pid)
|
|
{
|
|
if (TestForDoItNowEvent(conn, value, currentNetworkId, currentTransportStreamId, programNumber, descriptorListStreamEventDescriptor, pid))
|
|
return;
|
|
|
|
NpgsqlCommand command = conn.CreateCommand();
|
|
command.CommandText =
|
|
"insert into dsmcc_do_it_now_events (cnid, ctsid, program_number, pid, utc, event_id, private_data, npt_event_microsecond, npt_event_seconds)" +
|
|
"values (@cnid, @ctsid, @program_number, @pid, @utc, @event_id, @private_data, @npt_event_microsecond, @npt_event_seconds);";
|
|
command.Parameters.AddWithValue("@cnid", NpgsqlDbType.Integer, currentNetworkId);
|
|
command.Parameters.AddWithValue("@ctsid", NpgsqlDbType.Integer, currentTransportStreamId);
|
|
command.Parameters.AddWithValue("@program_number", NpgsqlDbType.Integer, programNumber);
|
|
command.Parameters.AddWithValue("@pid", NpgsqlDbType.Integer, pid);
|
|
command.Parameters.AddWithValue("@utc", NpgsqlDbType.Timestamp, value);
|
|
command.Parameters.AddWithValue("@event_id", NpgsqlDbType.Integer, (int)descriptorListStreamEventDescriptor.EventId);
|
|
command.Parameters.AddWithValue("@private_data", NpgsqlDbType.Bytea, descriptorListStreamEventDescriptor.PrivateData);
|
|
command.Parameters.AddWithValue("@npt_event_microsecond", NpgsqlDbType.Bigint, (long)descriptorListStreamEventDescriptor.NptEventMicroseconds);
|
|
command.Parameters.AddWithValue("@npt_event_seconds", NpgsqlDbType.Bigint, (long)descriptorListStreamEventDescriptor.NptEventSeconds);
|
|
command.ExecuteNonQuery();
|
|
}
|
|
|
|
private bool TestForDoItNowEvent(NpgsqlConnection conn, DateTime value, int currentNetworkId,
|
|
int currentTransportStreamId, int programNumber, StreamEventDescriptor descriptorListStreamEventDescriptor,
|
|
int pid)
|
|
{
|
|
NpgsqlCommand command = conn.CreateCommand();
|
|
command.CommandText =
|
|
"SELECT dateadded " +
|
|
"FROM dsmcc_do_it_now_events " +
|
|
"WHERE cnid = @cnid " +
|
|
"AND ctsid = @ctsid " +
|
|
"AND program_number = @program_number " +
|
|
"AND pid = @pid " +
|
|
"AND utc = @utc " +
|
|
"AND event_id = @event_id";
|
|
command.Parameters.AddWithValue("@cnid", NpgsqlDbType.Integer, currentNetworkId);
|
|
command.Parameters.AddWithValue("@ctsid", NpgsqlDbType.Integer, currentTransportStreamId);
|
|
command.Parameters.AddWithValue("@program_number", NpgsqlDbType.Integer, programNumber);
|
|
command.Parameters.AddWithValue("@pid", NpgsqlDbType.Integer, pid);
|
|
command.Parameters.AddWithValue("@utc", NpgsqlDbType.Timestamp, value);
|
|
command.Parameters.AddWithValue("@event_id", NpgsqlDbType.Integer, (int)descriptorListStreamEventDescriptor.EventId);
|
|
NpgsqlDataReader dataReader = command.ExecuteReader();
|
|
bool result = dataReader.Read();
|
|
dataReader.Close();
|
|
command.Dispose();
|
|
return result;
|
|
}
|
|
}
|
|
}
|