/// <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);
        }
Beispiel #2
0
        /// <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)
            {
            }
        }
Beispiel #3
0
        /// <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;
        }