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