public void Sync(string sourceDirectory, string targetDirectory) { var root = new DirectoryInfo(sourceDirectory).Name; var files = Directory.EnumerateFiles(sourceDirectory, "*.*", SearchOption.AllDirectories).ToList(); for (int i = 0; i < files.Count; i++) { var file = files[i]; var remoteFolder = Path.Combine(targetDirectory, new FileInfo(file).DirectoryName.Substring(file.IndexOf(root) + root.Length + 1)).Replace(@"\", "/"); if (!iPhone.CreateDirectory(remoteFolder)) { MessageBox.Show(string.Format("Create directory failed: {0}", remoteFolder)); } string remoteFile = Path.Combine(remoteFolder, Path.GetFileName(file)).Replace(@"\", "/"); ProgressChanged.RaiseEvent(this, new ProgressChangedEventArgs { NewProgress = (int)(((double)i / (double)files.Count) * 100.0), CurrentFile = remoteFile }); iPhone.CopyFile(file, remoteFile); } ProgressChanged.RaiseEvent(this, new ProgressChangedEventArgs { NewProgress = 100 }); SyncCompleted.RaiseEvent(this, new EventArgs()); }
private async Task SyncProc() { if (m_stop) { Debug.WriteLine("DFDS: Stopping sync..."); return; } Debug.WriteLine("DFDS: Sync"); m_syncTick++; Type[] keys; lock (TypeIdentifierRegistrations) { keys = TypeIdentifierRegistrations.Keys.ToArray(); } foreach (var syncType in keys) { if (m_syncTick % m_settings.DefaultSyncPeriodSeconds == 0) { // sync all defaults SyncType(syncType); SyncCompleted.Fire(this, new GenericEventArgs <Type>(syncType)); } else { // TODO: look to sync anyone with an override } } await Task.Delay(1000); Task.Run(async() => await SyncProc()); }
protected override void Execute(CodeActivityContext activityContext) { var stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); var trace = activityContext.GetExtension <ITracingService>(); trace.Trace("Starting BulkSyncContacts activity."); var workflowContext = activityContext.GetExtension <IWorkflowContext>(); var serviceFactory = activityContext.GetExtension <IOrganizationServiceFactory>(); var orgService = serviceFactory.CreateOrganizationService(null); var sync = new SyncHandler(orgService, trace, stopwatch); try { var result = sync.Run(); SyncCompleted.Set(activityContext, result); } catch (Exception ex) { throw new InvalidPluginExecutionException(ex.Message, ex); } trace.Trace("BulkSyncContacts activity finished."); }
public async Task CheckNewMessages() { string syncCheckResultCopy; while (checkingMessages) { try { SyncCheckStarted?.Invoke(this, null); string syncCheckUrl = "https://webpush." + host + "/cgi-bin/mmwebwx-bin/synccheck?r=" + GenerateMessageID() + "&skey=" + System.Net.WebUtility.UrlEncode(save.skey) + "&sid=" + System.Net.WebUtility.UrlEncode(save.wxsid) + "&uin=" + System.Net.WebUtility.UrlEncode(save.wxuin) + "&deviceid=e177768502217168&synckey="; for (int i = 0; i < SyncCheckKeys.Count; i++) { if (i == SyncCheckKeys.Count - 1) { syncCheckUrl += SyncCheckKeys[i].Key + "_" + SyncCheckKeys[i].Val; } else { syncCheckUrl += SyncCheckKeys[i].Key + "_" + SyncCheckKeys[i].Val + "%7C"; } } string syncCheckResult = await netHandler.GETRequestAsync(syncCheckUrl); syncCheckResultCopy = syncCheckResult; NetworkHandler.ReadUntil(ref syncCheckResult, "retcode:\""); string retCode = NetworkHandler.ReadUntil(ref syncCheckResult, "\""); NetworkHandler.ReadUntil(ref syncCheckResult, "selector:\""); string selector = NetworkHandler.ReadUntil(ref syncCheckResult, "\""); SyncCheckCompleted?.Invoke(this, new SyncCheckCompletedEventArgs() { retcode = retCode, selector = selector }); if (selector != "0") { SyncAgain: SyncStarted?.Invoke(this, null); SyncRequest SR = new SyncRequest() { BaseRequest = BR, rr = -Convert.ToInt64(GenerateMessageID()) }; SR.SyncKey = new SyncKey() { Count = SyncKeys.Count }; SR.SyncKey.List = new List <SyncKeyItem>(); foreach (SyncKeyItem key in SyncKeys) { SR.SyncKey.List.Add(key); } string syncResult = await netHandler.POSTRequestAsync("https://" + host + "/cgi-bin/mmwebwx-bin/webwxsync?sid=" + System.Net.WebUtility.UrlEncode(save.wxsid) + "&skey=" + System.Net.WebUtility.UrlEncode(save.skey), JsonConvert.SerializeObject(SR)); SyncResponse syncRes = JsonConvert.DeserializeObject <SyncResponse>(syncResult); try { List <SyncKeyItem> SyncCheckKeysCopy = new List <SyncKeyItem>(); List <SyncKeyItem> SyncKeysCopy = new List <SyncKeyItem>(); foreach (SyncKeyItem key in syncRes.SyncKey.List) { SyncKeysCopy.Add(key); } foreach (SyncKeyItem key in syncRes.SyncCheckKey.List) { SyncCheckKeysCopy.Add(key); } SyncCheckKeys = SyncCheckKeysCopy; SyncKeys = SyncKeysCopy; } catch { SyncOrSyncCheckError?.Invoke(this, new SyncOrSyncCheckErrorEventArgs() { errorMessage = "Sync returns EMPTY" }); } SyncCompleted?.Invoke(this, new SyncCompletedEventArgs() { syncResponse = syncRes }); } else if (retCode == "1101") { SessionExpired?.Invoke(this, null); checkingMessages = false; return; } } catch (Exception ex) { SyncOrSyncCheckError?.Invoke(this, new SyncOrSyncCheckErrorEventArgs() { errorMessage = ex.ToString() }); } } }