コード例 #1
0
        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());
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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.");
        }
コード例 #4
0
        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()
                    });
                }
            }
        }