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]);
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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]);
            }
        }