Telegram.MTProto.Components.UpdatesProcessor.InitDifferenceExecutor C# (CSharp) Method

InitDifferenceExecutor() private method

private InitDifferenceExecutor ( ) : void
return void
        private void InitDifferenceExecutor() {
            DifferenceExecutor = new RequestTask(async delegate {
                await session.Established;
                logger.info("get difference from state: pts {0}, qts {1}, date {2}", pts, qts, date);
                updates_Difference difference = await this.session.Api.updates_getDifference(pts, date, qts);
                while (difference.Constructor == Constructor.updates_differenceSlice || difference.Constructor == Constructor.updates_difference) {
                    List<Message> new_messages;
                    List<Update> other_updates;
                    List<Chat> chats;
                    List<User> users;
                    Updates_stateConstructor state;

                    logger.debug("processing difference: {0}", difference);

                    if (difference.Constructor == Constructor.updates_difference) {
                        Updates_differenceConstructor diff = (Updates_differenceConstructor)difference;
                        new_messages = diff.new_messages;
                        other_updates = diff.other_updates;
                        chats = diff.chats;
                        users = diff.users;
                        state = (Updates_stateConstructor)diff.state;

                        ProcessUpdatesDifference(new_messages, other_updates, chats, users, state);

                        break;
                    }
                    else {
                        Updates_differenceSliceConstructor diff = (Updates_differenceSliceConstructor)difference;
                        new_messages = diff.new_messages;
                        other_updates = diff.other_updates;
                        chats = diff.chats;
                        users = diff.users;
                        state = (Updates_stateConstructor)diff.intermediate_state;

                        ProcessUpdatesDifference(new_messages, other_updates, chats, users, state);

                        difference = await this.session.Api.updates_getDifference(pts, date, qts);
                    }
                }

                logger.info("get difference completed successfully");
            });
        }