Exemple #1
0
 protected MessageRec CreateMessageRec(string uniqueId, long messageSize)
 {
     PropValueData[] messageProps = SyncEmailUtils.GetMessageProps(default(SyncEmailContext), this.Mailbox.PopConnection.ConnectionContext.UserName, this.FolderId, new PropValueData[0]);
     PropValueData[] array        = new PropValueData[messageProps.Length + 1];
     messageProps.CopyTo(array, 0);
     array[array.Length - 1] = new PropValueData(PropTag.LastModificationTime, CommonUtils.DefaultLastModificationTime);
     return(new MessageRec(PopEntryId.CreateMessageEntryId(uniqueId), this.FolderId, CommonUtils.DefaultLastModificationTime, (int)messageSize, MsgRecFlags.None, array));
 }
Exemple #2
0
        List <MessageRec> IFolder.LookupMessages(PropTag ptagToLookup, List <byte[]> keysToLookup, PropTag[] additionalPtagsToLoad)
        {
            List <string> list = new List <string>(keysToLookup.Count);

            foreach (byte[] messageEntryId in keysToLookup)
            {
                list.Add(PopEntryId.ParseUid(messageEntryId));
            }
            return(this.EnumerateMessagesOnPopConnection(list));
        }
        private void EnumerateIncrementalChanges(PopFolderState currentState, PopFolderState lastSyncedState, FolderChangesManifest changes, IEnumerable <MessageRec> messages)
        {
            Dictionary <string, MessageRec> dictionary = new Dictionary <string, MessageRec>();

            foreach (MessageRec messageRec in messages)
            {
                string key = PopEntryId.ParseUid(messageRec.EntryId);
                dictionary.Add(key, messageRec);
            }
            this.EnumerateNewMessages(currentState, lastSyncedState, changes, dictionary);
            this.EnumerateMessageDeletes(currentState, lastSyncedState, changes, dictionary);
        }
Exemple #4
0
        public static byte[] CreateFolderEntryId(string input)
        {
            string hash = PopEntryId.GetHash(input);

            return(Encoding.UTF8.GetBytes(string.Format(CultureInfo.InvariantCulture, "{0}={1};{2}={3};{4}={5}", new object[]
            {
                "V",
                "1",
                "P",
                "POP",
                "FP",
                hash
            })));
        }
        Stream ISupportMime.GetMimeStream(MessageRec message, out PropValueData[] extraPropValues)
        {
            extraPropValues = null;
            string     messageUid = PopEntryId.ParseUid(message.EntryId);
            Stream     result;
            ExDateTime?exDateTime;

            this.FetchMessage(messageUid, out result, out exDateTime);
            if (exDateTime != null)
            {
                extraPropValues = new PropValueData[]
                {
                    new PropValueData(PropTag.MessageDeliveryTime, exDateTime.Value.ToUtc())
                };
            }
            return(result);
        }
        List <MessageRec> ISourceFolder.EnumerateMessagesPaged(int maxPageSize)
        {
            SyncContentsManifestState syncContentsManifestState = base.Mailbox.SyncState[base.FolderId];
            PopFolderState            popFolderState            = (syncContentsManifestState.Data != null) ? PopFolderState.Deserialize(syncContentsManifestState.Data) : PopFolderState.CreateNew();

            foreach (string item in this.crawlerCopiedMessages.Values)
            {
                popFolderState.MessageList.Add(item);
                this.crawlerCopiedMessages.Remove(item);
            }
            syncContentsManifestState.Data = popFolderState.Serialize();
            List <MessageRec> list  = base.EnumerateMessagesOnPopConnection(0);
            List <MessageRec> list2 = new List <MessageRec>();

            foreach (MessageRec messageRec in list)
            {
                string item2 = PopEntryId.ParseUid(messageRec.EntryId);
                if (!popFolderState.MessageList.Contains(item2))
                {
                    list2.Add(messageRec);
                    if (list2.Count == maxPageSize)
                    {
                        break;
                    }
                }
            }
            if (list2.Count == 0)
            {
                return(null);
            }
            foreach (MessageRec messageRec2 in list2)
            {
                string item3 = PopEntryId.ParseUid(messageRec2.EntryId);
                this.crawlerCopiedMessages.Add(item3);
            }
            return(list2);
        }