private void HandleSubscribe(SubscribeContract subscribeContract)
        {
            if (string.IsNullOrEmpty(subscribeContract.TableName))
            {
                return;
            }

            var table = ServiceLocator.DbInstance.TryGetTable(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()
            };

            SendDataToSocket(initContract);
        }
        public async Task TestSubscribeContract()
        {
            var serializer = new MyNoSqlTcpSerializer();

            var testContract = new SubscribeContract
            {
                TableName = "Test"
            };


            var dataReader = new TcpDataReader(ReadBufferSize);

            var rawData = serializer.Serialize(testContract);
            await dataReader.NewPackageAsync(rawData);

            var result
                = (SubscribeContract)await serializer
                  .DeserializeAsync(dataReader, CancellationToken.None);

            Assert.AreEqual(testContract.TableName, result.TableName);
        }
        protected override ValueTask OnConnectAsync()
        {
            var greetingsContract = new GreetingContract
            {
                Name = _appName
            };

            SendPacket(greetingsContract);

            foreach (var tableToSubscribe in _subscriber.GetTablesToSubscribe())
            {
                var subscribePacket = new SubscribeContract
                {
                    TableName = tableToSubscribe
                };

                SendPacket(subscribePacket);

                Console.WriteLine("Subscribed to MyNoSql table: " + tableToSubscribe);
            }

            return(new ValueTask());
        }