public static void UpdateMailboxLoggingEnabled(MailboxSession mailboxSession, bool mailboxLoggingEnabled, ISyncLogger syncLogger = null) { using (Folder syncFolderRoot = SyncStateStorage.GetSyncFolderRoot(mailboxSession, syncLogger)) { if (mailboxLoggingEnabled) { syncFolderRoot[SyncStateStorage.airsyncMailboxLoggingEnabledProp] = ExDateTime.UtcNow; } else { syncFolderRoot.Delete(SyncStateStorage.airsyncMailboxLoggingEnabledProp); } syncFolderRoot.Save(); syncFolderRoot.Load(); Folder folder = null; try { folder = SyncStateStorage.CreateAndSaveFolder(mailboxSession, syncFolderRoot.Id.ObjectId, CreateMode.OpenIfExists, SyncStateStorage.MailboxLoggingTriggerFolder, null, null, syncLogger); if (folder != null) { syncFolderRoot.DeleteObjects(DeleteItemFlags.SoftDelete, new StoreId[] { folder.Id.ObjectId }); } } finally { if (folder != null) { folder.Dispose(); } } } }
public static GetSyncStateResult GetData(MailboxSession session, ParsedCallData callData) { GetSyncStateResult getSyncStateResult = new GetSyncStateResult(); getSyncStateResult.LoggingEnabled = SyncStateStorage.GetMailboxLoggingEnabled(session, null); using (SyncStateStorage.GetSyncFolderRoot(session, null)) { UserSyncStateMetadata userSyncStateMetadata = UserSyncStateMetadataCache.Singleton.Get(session, null); List <DeviceSyncStateMetadata> allDevices = userSyncStateMetadata.GetAllDevices(session, true, null); getSyncStateResult.Devices = new List <DeviceData>(allDevices.Count); foreach (DeviceSyncStateMetadata deviceSyncStateMetadata in allDevices) { if (SyncStateDiagnostics.ShouldAddDevice(callData, deviceSyncStateMetadata.Id)) { DeviceData deviceData = new DeviceData { Name = deviceSyncStateMetadata.Id.CompositeKey, SyncFolders = new List <SyncStateFolderData>(), FolderId = deviceSyncStateMetadata.DeviceFolderId }; getSyncStateResult.Devices.Add(deviceData); foreach (KeyValuePair <string, SyncStateMetadata> keyValuePair in deviceSyncStateMetadata.SyncStates) { bool flag = string.Equals(keyValuePair.Key, callData.SyncStateName, StringComparison.OrdinalIgnoreCase); if (callData.SyncStateName == null || flag) { SyncStateFolderData syncStateFolderData = new SyncStateFolderData { Name = keyValuePair.Key, StorageType = keyValuePair.Value.StorageType.ToString() }; if (flag) { SyncStateDiagnostics.GetSyncStateBlob(session, keyValuePair.Value, syncStateFolderData); } else { syncStateFolderData.SyncStateSize = -1; } deviceData.SyncFolders.Add(syncStateFolderData); } } } } } return(getSyncStateResult); }