Search in sources :

Example 6 with Update

use of im.actor.core.network.parser.Update in project actor-platform by actorapp.

the class UpdateProcessor method applyDifferenceUpdate.

// 
// Difference
// 
public Promise<Void> applyDifferenceUpdate(List<Update> updates) {
    CombinedDifference combinedDifference = GetDiffCombiner.buildDiff(updates);
    ArrayList<Supplier<Promise<Void>>> pending = new ArrayList<>();
    pending.add(() -> messagesProcessor.onDifferenceStart());
    for (Peer peer : combinedDifference.getReceived().keySet()) {
        long time = combinedDifference.getReceived().get(peer);
        pending.add(() -> processUpdate(new UpdateMessageReceived(buildApiPeer(peer), time, 0)));
    }
    for (Peer peer : combinedDifference.getRead().keySet()) {
        long time = combinedDifference.getRead().get(peer);
        pending.add(() -> processUpdate(new UpdateMessageRead(buildApiPeer(peer), time, 0)));
    }
    for (Peer peer : combinedDifference.getReadByMe().keySet()) {
        CombinedDifference.ReadByMeValue time = combinedDifference.getReadByMe().get(peer);
        pending.add(() -> processUpdate(new UpdateMessageReadByMe(buildApiPeer(peer), time.getDate(), time.getCounter())));
    }
    for (Peer peer : combinedDifference.getMessages().keySet()) {
        pending.add(() -> messagesProcessor.onDifferenceMessages(buildApiPeer(peer), combinedDifference.getMessages().get(peer)));
    }
    for (Update u : combinedDifference.getOtherUpdates()) {
        pending.add(() -> processUpdate(u));
    }
    pending.add(() -> messagesProcessor.onDifferenceEnd());
    return Promises.traverse(pending).map(v -> null);
}
Also used : CombinedDifference(im.actor.core.modules.sequence.internal.CombinedDifference) Peer(im.actor.core.entity.Peer) ArrayList(java.util.ArrayList) UpdateMessageReadByMe(im.actor.core.api.updates.UpdateMessageReadByMe) Supplier(im.actor.runtime.function.Supplier) UpdateMessageReceived(im.actor.core.api.updates.UpdateMessageReceived) Void(im.actor.runtime.actors.messages.Void) Update(im.actor.core.network.parser.Update) UpdateMessageRead(im.actor.core.api.updates.UpdateMessageRead)

Aggregations

Update (im.actor.core.network.parser.Update)6 ArrayList (java.util.ArrayList)4 FatSeqUpdate (im.actor.core.api.base.FatSeqUpdate)3 SeqUpdate (im.actor.core.api.base.SeqUpdate)3 WeakUpdate (im.actor.core.api.base.WeakUpdate)3 IOException (java.io.IOException)3 UpdateMessageRead (im.actor.core.api.updates.UpdateMessageRead)2 UpdateMessageReadByMe (im.actor.core.api.updates.UpdateMessageReadByMe)2 UpdateMessageReceived (im.actor.core.api.updates.UpdateMessageReceived)2 Void (im.actor.runtime.actors.messages.Void)2 ApiDialogGroup (im.actor.core.api.ApiDialogGroup)1 ApiDialogShort (im.actor.core.api.ApiDialogShort)1 ApiGroup (im.actor.core.api.ApiGroup)1 ApiGroupOutPeer (im.actor.core.api.ApiGroupOutPeer)1 ApiUpdateContainer (im.actor.core.api.ApiUpdateContainer)1 ApiUser (im.actor.core.api.ApiUser)1 ApiUserOutPeer (im.actor.core.api.ApiUserOutPeer)1 RequestGetDifference (im.actor.core.api.rpc.RequestGetDifference)1 RequestGetReferencedEntitites (im.actor.core.api.rpc.RequestGetReferencedEntitites)1 RequestGetState (im.actor.core.api.rpc.RequestGetState)1