Esempio n. 1
0
        private void ProcessChanges(FTEMessage message)
        {
            var changesMsg = message.GetMessage <Changes>();

            List <TaskCompletionSource <bool> > tcsList = new List <TaskCompletionSource <bool> >(1);

            foreach (var row in changesMsg.row)
            {
                var rowChange = MessageParser.Deserialize <RowChange>(row);
                ProcessRow(rowChange);

                lock (sync)
                {
                    TaskCompletionSource <bool> tcs;
                    if (subscriptions.TryGetValue(rowChange.tabId, out tcs))
                    {
                        subscriptions.Remove(rowChange.tabId);
                        tcsList.Add(tcs);
                    }
                }
            }

            foreach (var tcs in tcsList)
            {
                tcs.SetResult(true);
            }
        }