public async Task TestInitTableContract() { var serializer = new MyNoSqlTcpSerializer(); var testContract = new InitTableContract { TableName = "Test", Data = new byte[] { 1, 2, 3 } }; var dataReader = new TcpDataReader(ReadBufferSize); var rawData = serializer.Serialize(testContract); await dataReader.NewPackageAsync(rawData); var result = (InitTableContract)await serializer .DeserializeAsync(dataReader, CancellationToken.None); Assert.AreEqual(testContract.TableName, result.TableName); Assert.AreEqual(testContract.Data.Length, result.Data.Length); for (var i = 0; i < testContract.Data.Length; i++) { Assert.AreEqual(testContract.Data[i], result.Data[i]); } }
private void HandleSubscribe(SubscribeContract subscribeContract) { if (string.IsNullOrEmpty(subscribeContract.TableName)) { return; } var table = DbInstance.GetTable(subscribeContract.TableName); if (table == null) { return; } var tables = new List <string>(); if (_tablesSubscribed.Count > 0) { tables.AddRange(_tablesSubscribed); } tables.Add(subscribeContract.TableName); _tablesSubscribed = tables; TableSubscribers.Subscribe(subscribeContract.TableName, this); var rows = table.GetAllRecords(null); Console.WriteLine($"Socket {Id} is subscribed to the table {subscribeContract.TableName}. Initialized records: {rows.Count}"); var initContract = new InitTableContract { TableName = subscribeContract.TableName, Data = rows.ToHubUpdateContract() }; SendPacket(initContract); }
public static void BroadcastInitTable(DbTable dbTable) { var connections = TableSubscribers.GetConnections(dbTable.Name); if (connections == null) { return; } var packetToBroadcast = new InitTableContract { TableName = dbTable.Name, Data = dbTable.GetAllRecords(null).ToHubUpdateContract() }; foreach (var connection in connections) { connection.SendPacket(packetToBroadcast); } }
public void TestInitTableContract() { var serializer = new MyNoSqlTcpSerializer(); var testContract = new InitTableContract { TableName = "Test", Data = new byte[] { 1, 2, 3 } }; var rawData = serializer.Serialize(testContract); var memStream = new MemoryStream(rawData.ToArray()) { Position = 0 }; var dataReader = new TcpDataReader(); dataReader.NewPackage(memStream.ToArray()); var result = (InitTableContract)serializer .DeserializeAsync(dataReader) .AsTestResult(); Assert.AreEqual(testContract.TableName, result.TableName); Assert.AreEqual(testContract.Data.Length, result.Data.Length); for (var i = 0; i < testContract.Data.Length; i++) { Assert.AreEqual(testContract.Data[i], result.Data[i]); } }