Exemple #1
0
        internal void ProcessDbMessageState(DbMessageState record)
        {
            var eventCollector = new YamsterModelEventCollector();

            ProcessDbMessageState(record, eventCollector);
            eventCollector.FireEvents();
        }
Exemple #2
0
        // TODO: This is a hack.  Need a better story for referencing objects that haven't been
        // synced yet.
        public YamsterUser GetPossiblyUnknownUserById(long userId)
        {
            var eventCollector = new YamsterModelEventCollector();
            var user           = FetchUserById(userId, eventCollector);

            eventCollector.FireEvents();
            return(user);
        }
Exemple #3
0
        void ProcessDbGroupState(DbGroupState record)
        {
            var          eventCollector = new YamsterModelEventCollector();
            YamsterGroup group          = this.FetchGroupById(record.GroupId, eventCollector);

            group.SetDbGroupState(record, eventCollector);
            eventCollector.FireEvents();
        }
Exemple #4
0
        void ProcessDbUser(DbUser record)
        {
            var         eventCollector = new YamsterModelEventCollector();
            YamsterUser user           = this.FetchUserById(record.UserId, eventCollector);

            user.DbUser = record;
            eventCollector.NotifyAfterUpdate(user);
            eventCollector.FireEvents();
        }
Exemple #5
0
        void ProcessDbMessage(DbMessage record)
        {
            // Does the message exist yet?
            var message = this.GetMessageById(record.MessageId, nullIfMissing: true);

            bool messageIsNew = message == null;

            var eventCollector = new YamsterModelEventCollector();

            if (messageIsNew)
            {
                message = new YamsterMessage(record.MessageId, this);
                this.messagesById.Add(record.MessageId, message);
                eventCollector.NotifyAfterAdd(message);
                message.SetDbMessage(record, eventCollector);

                // For now we assume that messages cannot move between threads
                var           threadId = message.ThreadId;
                YamsterThread thread   = GetThreadById(threadId, nullIfMissing: true);
                if (thread == null)
                {
                    thread = new YamsterThread(threadId, message.Group, this);
                    threadsById.Add(threadId, thread);
                    eventCollector.NotifyAfterAdd(thread);
                    message.Group.AddThread(thread, eventCollector);

                    thread.AddMessage(message, eventCollector);

                    FixupUnresolvedObjectsForThread(thread, message, eventCollector);
                }
                else
                {
                    thread.AddMessage(message, eventCollector);
                }
            }
            else
            {
                message.SetDbMessage(record, eventCollector);
            }

            // Was there an unresolved message that we can process now?
            DbMessageState unresolvedMessageState;

            if (this.unresolvedMessageStatesById.TryGetValue(record.MessageId, out unresolvedMessageState))
            {
                this.unresolvedMessageStatesById.Remove(record.MessageId);
                ProcessDbMessageState(unresolvedMessageState, eventCollector);
            }

            if (messageIsNew)
            {
                CheckForListenedMessage(message, eventCollector);
            }

            eventCollector.FireEvents();
        }
Exemple #6
0
        void ProcessDbConversation(DbConversation record)
        {
            // Does the thread exist yet?
            YamsterThread thread;

            if (threadsByConversationId.TryGetValue(record.ConversationId, out thread))
            {
                var eventCollector = new YamsterModelEventCollector();
                thread.UpdateConversation(record, eventCollector);
                eventCollector.FireEvents();
            }
            else
            {
                // Stash the conversation and deal with it later
                unresolvedConversationsById[record.ConversationId] = record;
            }
        }
Exemple #7
0
        void ProcessDbThreadState(DbThreadState record)
        {
            // Does the thread exist yet?
            YamsterThread thread;

            if (threadsById.TryGetValue(record.ThreadId, out thread))
            {
                var eventCollector = new YamsterModelEventCollector();
                thread.SetDbThreadState(record, eventCollector);
                eventCollector.FireEvents();
            }
            else
            {
                // Stash the record and deal with it later
                unresolvedThreadStatesById[record.ThreadId] = record;
            }
        }