/// <summary> /// 根据通过RegisterContactSyncService方法注册的同步服务,对任联系人进行双向同步 /// </summary> /// <param name="contacts">与某个账号相关的所有联系人</param> /// <param name="syncInfos">与某个账号相关的所有同步信息</param> /// <returns>同步结果,包含本地联系人数据的增删改,以及外部数据源数据的增删改</returns> public ContactSyncResult SyncContacts(IEnumerable <ContactSyncData> contacts, IEnumerable <SyncInfo> syncInfos) { ContactSyncResult syncResult = new ContactSyncResult(); foreach (var contactSyncService in _contactSyncServices) { ContactSyncResult result = null; bool success = false; try { result = contactSyncService.ProcessTwoWaySynchronization(contacts, syncInfos); success = true; } catch (Exception ex) { _logger.Error(string.Format("{0}.ProcessTwoWaySynchronization has exception.", contactSyncService.GetType().Name), ex); } if (success) { syncResult.MergeResult(result); } } return(syncResult); }
/// <summary> /// 持久化本地需要增删改的联系人 /// </summary> private void ProcessLocalContactDatas(ContactSyncResult contactSyncResult, Account account) { //TODO,由于联系人功能暂时还未做好,所以这里先不实现 if (contactSyncResult.LocalDatasToCreate.Count() == 0 && contactSyncResult.LocalDatasToUpdate.Count() == 0 && contactSyncResult.LocalDatasToDelete.Count() == 0) { return; } //处理在本地需要新增的联系人 foreach (var contactData in contactSyncResult.LocalDatasToCreate) { } //处理在本地需要更新的联系人 foreach (var contactData in contactSyncResult.LocalDatasToUpdate) { } //处理在本地需要删除的联系人 foreach (var contactData in contactSyncResult.LocalDatasToDelete) { } }
/// <summary> /// 根据通过RegisterContactSyncService方法注册的同步服务,对任联系人进行双向同步 /// </summary> /// <param name="contacts">与某个账号相关的所有联系人</param> /// <param name="syncInfos">与某个账号相关的所有同步信息</param> /// <returns>同步结果,包含本地联系人数据的增删改,以及外部数据源数据的增删改</returns> public ContactSyncResult SyncContacts(IEnumerable<ContactSyncData> contacts, IEnumerable<SyncInfo> syncInfos) { ContactSyncResult syncResult = new ContactSyncResult(); foreach (var contactSyncService in _contactSyncServices) { ContactSyncResult result = null; bool success = false; try { result = contactSyncService.ProcessTwoWaySynchronization(contacts, syncInfos); success = true; } catch (Exception ex) { _logger.Error(string.Format("{0}.ProcessTwoWaySynchronization has exception.", contactSyncService.GetType().Name), ex); } if (success) { syncResult.MergeResult(result); } } return syncResult; }