コード例 #1
0
        public void Service_MessageGetNewCompleted(object sender, MessageGetNewCompletedEventArgs e)
        {
            LOLMessageClient service = (LOLMessageClient)sender;
            service.MessageGetNewCompleted -= Service_MessageGetNewCompleted;

            if (null == e.Error)
            {
                Message[] result = e.Result.ToArray();

            #if(DEBUG)
                System.Diagnostics.Debug.WriteLine("Received {0} new messages!", result.Length);
            #endif

                List<Message> msgList = new List<Message>();
                Queue<Guid> userQ = new Queue<Guid>();
                foreach (Message eachMessage in result)
                {
                    if (eachMessage.Errors.Count > 0)
                    {
            #if(DEBUG)
                        System.Diagnostics.Debug.WriteLine("Error retrieving new messages: {0}",
                                          StringUtils.CreateErrorMessageFromMessageGeneralErrors(eachMessage.Errors));
            #endif
                    } else
                    {
                        msgList.Add(eachMessage);
                        if (!dbm.CheckUserExists(eachMessage.FromAccountID.ToString()))
                        {
                            userQ.Enqueue(eachMessage.FromAccountID);
                        }
                    }
                }
                // Insert the messages to the database

                List<MessageDB> msgListForDB = new List<MessageDB>();
                msgList.ForEach(s => msgListForDB.Add(MessageDB.ConvertFromMessage(s)));
                dbm.InsertOrUpdateMessages(msgListForDB);

                // Trigger the event only if the app is active.
            #if DEBUG
                System.Diagnostics.Debug.WriteLine("IsAppActive = {0}, msgList.Count = {1}", AndroidData.IsAppActive, msgList.Count);
            #endif
                if (AndroidData.IsAppActive == true && msgList.Count > 0)
                {
                    if (null != this.ReceivedMessages)
                    {
                        this.ReceivedMessages(this, new IncomingMessageEventArgs(msgList));
                    }//end if
                }//end if

                if (userQ.Count > 0)
                {
                    LOLConnectClient clientService = new LOLConnectClient(LOLConstants.DefaultHttpBinding, LOLConstants.LOLConnectEndpoint);
                    clientService.UserGetSpecificCompleted += Service_UserGetSpecificCompleted;
                    clientService.UserGetSpecificAsync(AndroidData.CurrentUser.AccountID, userQ.Peek(), new Guid(AndroidData.ServiceAuthToken), userQ);
                } else
                    this.isMsgInProgress = false;
            } else
            {
                this.isMsgInProgress = false;
            #if(DEBUG)
                System.Diagnostics.Debug.WriteLine("Exception receiving message! {0}--{1}",
                                  e.Error.Message, e.Error.StackTrace);
            #endif
            }//end if else
        }
コード例 #2
0
        private void Service_MessageGetNewCompleted(object sender, MessageGetNewCompletedEventArgs e)
        {
            LOLMessageClient service = (LOLMessageClient)sender;
            service.MessageGetNewCompleted -= Service_MessageGetNewCompleted;

            if (null == e.Error)
            {
                LOLMessageDelivery.Message[] result = e.Result.ToArray();
                List<MessageDB> msgList = new List<MessageDB>();
                UserDB contactUser = null;
                foreach (LOLMessageDelivery.Message eachMessage in result)
                {
                    if (eachMessage.Errors.Count > 0)
                    {
                        #if DEBUG
                        System.Diagnostics.Debug.WriteLine("Error retrieving message: {0}", StringUtils.CreateErrorMessageFromMessageGeneralErrors(eachMessage.Errors));
                        #endif
                    } else
                    {
                        #if DEBUG
                        System.Diagnostics.Debug.WriteLine("**Message id received: {0}", eachMessage.MessageID);
                        #endif

                        MessageDB msgDB = MessageDB.ConvertFromMessage(eachMessage);
                        msgList.Add(msgDB);
            #if DEBUG
                        System.Diagnostics.Debug.WriteLine("Message in conversation received! {0}", msgDB);
                        #endif

                        contactUser = msgDB.FromAccountID == AndroidData.CurrentUser.AccountID ? UserDB.ConvertFromUser(AndroidData.CurrentUser) :
                                                                                   dbm.GetUserWithAccountID(msgDB.FromAccountGuid);

                        this.MessageItems [eachMessage.MessageID] = new Messages.MessageInfo(msgDB, contactUser);
                    }//end if else
                }//end foreach

                if (msgList.Count > 0)
                    dbm.InsertOrUpdateMessages(msgList);
                if (!killed)
                    grabAndDisplayLastTen();
            }
        }