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)); }
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); }
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); }