Ejemplo n.º 1
0
            private async Task UpdateNextItems()
            {
                var Len = await Client.GetData <int>();

                var ServerUpCodes = new ulong[Len];

                ulong[] ServerUpCodes_Parent = null;
                if (IsPartOfTable)
                {
                    ServerUpCodes_Parent = new ulong[Len];
                }
                for (int i = 0; i < Len; i++)
                {
                    var UpCode = await Client.GetData <ulong>();

                    if (IsPartOfTable)
                    {
                        var ParentUpCode = await Client.GetData <ulong>();

                        if (ParentTable.UpdateAble.IsExist(ParentUpCode))
                        {
                            var ParentUpDate = ParentTable.UpdateAble[ParentUpCode];
                            if (PartTable.IsExist(ParentUpDate.Key) == false)
                            {
                                PartTable.Accept(ParentUpDate.Key);
                            }
                            Added(ParentUpDate.Key, UpCode);
                            await Client.SendData(false);

                            StartPos++;
                            Len--;
                            i--;
                        }
                        else
                        {
                            await Client.SendData(true);

                            ServerUpCodes[i]        = UpCode;
                            ServerUpCodes_Parent[i] = ParentUpCode;
                        }
                    }
                    else
                    {
                        await Client.SendData(true);

                        ServerUpCodes[i] = UpCode;
                    }
                }
                for (int i = 0; i < Len; i++)
                {
                    var Value = await Client.GetData <ValueType>();

                    var Key    = Table.GetKey(Value);
                    var Update = new UpdateAble <KeyType>()
                    {
                        Key = Key, UpdateCode = ServerUpCodes[i]
                    };
                    Table.UpdateOrInsert(Key, (c) =>
                    {
                        Table.MoveRelations(c, Value);
                        return(Value);
                    });
                    if (IsPartOfTable)
                    {
                        Added(Key, ServerUpCodes[i], ServerUpCodes_Parent[i]);
                    }
                    else
                    {
                        Added(Key, ServerUpCodes[i]);
                    }
                    StartPos++;
                }
            }