public void DownloadAsync(CompletedEventHandler completedEvent)
        {
            Thread thread = new Thread(new ThreadStart(() =>
            {
                VVK_WPRC.CurlUtil cutil = new VVK_WPRC.CurlUtil();

                string output = cutil.DownloadWithCert(CONF_URL, false, "", CONF_CERT);
                Debug.WriteLine(output);
                if (output == null || output.Length < 1)
                {
                    completedEvent(false);
                    return;
                }

                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ConfModel));
                using (MemoryStream memStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(output)))
                {
                    try
                    {
                        _confModel = serializer.ReadObject(memStream) as ConfModel;
                    }
                    catch (Exception e)
                    {
                        if(completedEvent != null)
                            completedEvent(false);
                        return;
                    }
                }

                if (completedEvent != null)
                    completedEvent(true);
            }));
            thread.Start();
        }
Exemple #2
0
        /// <summary>
        /// Deletes out of date temp files
        /// </summary>
        /// <param name="sDataPath">application data path</param>
        /// <param name="extensions">temp files extensions string array</param>
        /// <param name="days">period for deleting files</param>
        /// <param name="finishDate">date after that files will not be deleted</param>
        /// <param name="completedHandler">handler to events for completion</param>
        /// <returns>true in case of success</returns>
        public static bool Clean(
            string sDataPath,
            IList <string> extensions,
            int days,
            DateTime finishDate,
            CompletedEventHandler completedHandler
            )
        {
            string query = string.Format(QUERY_TMPL, GetDrive(sDataPath), GetPath(sDataPath),
                                         GetExtensionCondition(extensions),
                                         GetDate(days, finishDate));

            using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
            {
                // Create a results watcher object,
                // and handler for results and completion
                ManagementOperationObserver results = new
                                                      ManagementOperationObserver();

                // Attach handler to events for results and completion
                results.ObjectReady += NewObject;
                results.Completed   += completedHandler; // Done;

                // Call the asynchronous overload of Get()
                // to start the enumeration
                searcher.Get(results);

                return(true);
            }
        }
Exemple #3
0
 /// <summary>
 /// 登录MC正版账号
 /// </summary>
 /// <param name="completedEventHandler"></param>
 /// <param name="ID"></param>
 /// <param name="PW"></param>
 public YggdrasilWorker(CompletedEventHandler completedEventHandler, string ID, string PW)
 {
     this.ID = ID;
     this.PW = PW;
     this.completedEventHandler = completedEventHandler;
     WorkerSupportsCancellation = true;
     DoWork             += YggdrasilWorker_DoWork;
     RunWorkerCompleted += YggdrasilWorker_RunWorkerCompleted;
 }
 /// <summary>
 /// 网络操作后台线程
 /// </summary>
 /// <param name="completedEventHandler">完成时调用</param>
 /// <param name="operation">所需的操作</param>
 /// <param name="beSendedData">需要发送的数据</param>
 /// <param name="tryTimes">尝试次数</param>
 /// <param name="passDown">需要在完成时传给CompletedEventHandler委托的东西</param>
 public NetworkWorker(CompletedEventHandler completedEventHandler, ExchangeCode operation, byte[] beSendedData, object passDown)
 {
     this.beSendedData          = beSendedData;
     this.operation             = operation;
     this.completedEventHandler = completedEventHandler;
     WorkerSupportsCancellation = true;
     DoWork             += NetworkWorker_DoWork;
     RunWorkerCompleted += NetworkWorker_RunWorkerCompleted;
     this.passDown       = passDown;
 }
Exemple #5
0
        public Task <IEnumerable <PropertyDataCollection> > CollectAsync()
        {
            var tcs     = new TaskCompletionSource <IEnumerable <PropertyDataCollection> >();
            var watcher = new ManagementOperationObserver();
            var results = new List <PropertyDataCollection>();

            var readyHandler = new ObjectReadyEventHandler((sender, e) =>
            {
                results.Add(e.NewObject.Properties);
            });

            // The event handler that gets invoked by the watcher.
            var completedHandler = default(CompletedEventHandler);

            completedHandler = new CompletedEventHandler((sender, e) =>
            {
                var tcsLocal = tcs;
                try
                {
                    if (e.Status == ManagementStatus.NoError)
                    {
                        // The operation was completed without any errors.
                        tcsLocal.SetResult(results);
                        return;
                    }

                    if (e.Status == ManagementStatus.CallCanceled || e.Status == ManagementStatus.OperationCanceled)
                    {
                        // The task was cancelled before it could be completed.
                        tcsLocal.SetCanceled();
                        return;
                    }

                    // An exception occurred during the operation.
                    tcsLocal.SetException(new Exception($"Runtime error {e.Status}"));
                    return;
                }
                finally
                {
                    // Clean up the event handlers.
                    watcher.Completed -= completedHandler;
                }
            });

            // Wire up the event handler and begin the operation.
            watcher.ObjectReady += readyHandler;
            watcher.Completed   += completedHandler;
            var management = new ManagementClass("Win32_LogicalDisk");

            management.GetInstances(watcher);

            return(tcs.Task);
        }
        public void DownloadAsync(CompletedEventHandler completedEvent)
        {
            Thread thread = new Thread(new ThreadStart(() =>
            {
                VVK_WPRC.CurlUtil cutil = new VVK_WPRC.CurlUtil();

                string output = cutil.DownloadWithCert(CONF_URL, false, "", CONF_CERT);
                Debug.WriteLine(output);
                if (output == null || output.Length < 1)
                {
                    completedEvent(false);
                    return;
                }

                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ConfModel));
                using (MemoryStream memStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(output)))
                {
                    try
                    {
                        _confModel = serializer.ReadObject(memStream) as ConfModel;
                    }
                    catch (Exception e)
                    {
                        if (completedEvent != null)
                        {
                            completedEvent(false);
                        }
                        return;
                    }
                }

                if (completedEvent != null)
                {
                    completedEvent(true);
                }
            }));

            thread.Start();
        }
Exemple #7
0
        public void VerifyAsync(string verificationUri, string voteContainerId, CompletedEventHandler completedEvent)
        {
            ErrorMessage = null;
            Thread thread = new Thread(new ThreadStart(() =>
            {
                if (completedEvent == null)
                {
                    throw new ArgumentNullException();
                }

                VVK_WPRC.CurlUtil cutil = new VVK_WPRC.CurlUtil();
                string post_data        = "verify=" + voteContainerId;

                string result = cutil.DownloadWithCert(verificationUri, true, post_data, VERIFICATION_CERT);
                if (result == null || result.Equals(""))
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                string[] components = result.Split(new string[] { "\n" }, 4, StringSplitOptions.None);
                // In case of failure 'components' contains following items:
                // 0: version number
                // 1: status code 1
                // 2: error message
                // 3: new-line

                // In case of success 'components' should contain following items:
                // 0: version number
                // 1: status code 0
                // 2: elections separated by TAB
                // 3: encrypted votes separated by new-line following list of candidates
                if (components.Length < 4)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                VersionNumber = Convert.ToInt32(components[0]);
                StatusCode    = Convert.ToInt32(components[1]);
                ErrorMessage  = components[2];

                if (StatusCode != 0)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                string[] elections = components[2].Split('\t');
                if (elections.Length < 1)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                // separate encrypted votes from candidates, 'components' item count should be at least 2
                components = components[3].Split(new string[] { "\n\n" }, StringSplitOptions.None);
                if (components.Length < 2)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                string encryptedVotesString = components[0];
                string[] encryptedVotes     = encryptedVotesString.Split('\n');

                if (encryptedVotes.Length < 1)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                _encryptedVotes = new List <EncryptedVote>();
                foreach (string encryptedVoteStr in encryptedVotes)
                {
                    string[] encVoteComponents = encryptedVoteStr.Split('\t');
                    EncryptedVote encVote      = new EncryptedVote();
                    encVote.ElectionName       = encVoteComponents[0];
                    encVote.EncryptedHex       = encVoteComponents[1];
                    _encryptedVotes.Add(encVote);
                }

                string[] candidatesArray = components[1].Split('\n');
                if (candidatesArray.Length < 1)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                _candidates = new List <Candidate>();
                foreach (string candidateStr in candidatesArray)
                {
                    string[] candidateComponents = candidateStr.Split('\t');
                    Candidate candidate          = new Candidate();
                    candidate.ElectionName       = candidateComponents[0];
                    candidate.Code  = candidateComponents[3];
                    candidate.Name  = candidateComponents[4];
                    candidate.Party = candidateComponents[5];
                    _candidates.Add(candidate);
                }

                completedEvent(0);
            }));

            thread.Start();
        }
 /// <summary>
 /// 网络操作后台线程
 /// </summary>
 /// <param name="completedEventHandler">完成时调用</param>
 /// <param name="operation">所需的操作</param>
 /// <param name="beSendedData">需要发送的数据</param>
 /// <param name="tryTimes">尝试次数</param>
 /// <param name="passDown">需要在完成时传给CompletedEventHandler委托的东西</param>
 public NetworkWorker(CompletedEventHandler completedEventHandler, ExchangeCode operation, string beSendedData, object passDown)
     : this(completedEventHandler, operation, Encoding.UTF8.GetBytes(beSendedData), passDown)
 {
 }
        public void VerifyAsync(string verificationUri, string voteContainerId, CompletedEventHandler completedEvent)
        {
            ErrorMessage = null;
            Thread thread = new Thread(new ThreadStart(() =>
            {
                if (completedEvent == null)
                    throw new ArgumentNullException();

                VVK_WPRC.CurlUtil cutil = new VVK_WPRC.CurlUtil();
                string post_data = "verify=" + voteContainerId;

                string result = cutil.DownloadWithCert(verificationUri, true, post_data, VERIFICATION_CERT);
                if (result == null || result.Equals(""))
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                string[] components = result.Split(new string[]{"\n"}, 4, StringSplitOptions.None);
                // In case of failure 'components' contains following items:
                // 0: version number
                // 1: status code 1
                // 2: error message
                // 3: new-line

                // In case of success 'components' should contain following items:
                // 0: version number
                // 1: status code 0
                // 2: elections separated by TAB
                // 3: encrypted votes separated by new-line following list of candidates
                if (components.Length < 4)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                VersionNumber = Convert.ToInt32(components[0]);
                StatusCode = Convert.ToInt32(components[1]);
                ErrorMessage = components[2];

                if (StatusCode != 0)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                string[] elections = components[2].Split('\t');
                if (elections.Length < 1)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                // separate encrypted votes from candidates, 'components' item count should be at least 2
                components = components[3].Split(new string[]{"\n\n"}, StringSplitOptions.None);
                if (components.Length < 2)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                string encryptedVotesString = components[0];
                string[] encryptedVotes = encryptedVotesString.Split('\n');

                if (encryptedVotes.Length < 1)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                _encryptedVotes = new List<EncryptedVote>();
                foreach (string encryptedVoteStr in encryptedVotes)
                {
                    string[] encVoteComponents = encryptedVoteStr.Split('\t');
                    EncryptedVote encVote = new EncryptedVote();
                    encVote.ElectionName = encVoteComponents[0];
                    encVote.EncryptedHex = encVoteComponents[1];
                    _encryptedVotes.Add(encVote);
                }

                string[] candidatesArray = components[1].Split('\n');
                if (candidatesArray.Length < 1)
                {
                    completedEvent(VerificationStatus.Failure);
                    return;
                }

                _candidates = new List<Candidate>();
                foreach (string candidateStr in candidatesArray)
                {
                    string[] candidateComponents = candidateStr.Split('\t');
                    Candidate candidate = new Candidate();
                    candidate.ElectionName = candidateComponents[0];
                    candidate.Code = candidateComponents[3];
                    candidate.Name = candidateComponents[4];
                    candidate.Party = candidateComponents[5];
                    _candidates.Add(candidate);
                }

                completedEvent(0);
            }));
            thread.Start();
        }
        public void SetDefaultValue()
        {
            Trace();

            ConnectionId = AnyNewConnectionId;
            LocalEndPoint = null;

            Completed = null;
            AcceptSocket = null;

            if (segment.Array != null && segment.Count != DefaultSize)
                BufferManager.Free(ref segment);

            offsetOffset = DefaultOffsetOffset;
            count = DefaultSize - DefaultOffsetOffset;
            bytesTransferred = 0;

            UserTokenForSending = 0;
        }
Exemple #11
0
 /// <summary>
 /// 网络操作后台线程
 /// </summary>
 /// <param name="completedEventHandler">完成时调用</param>
 /// <param name="operation">所需的操作</param>
 /// <param name="beSendedData">需要发送的数据</param>
 /// <param name="tryTimes">尝试次数</param>
 /// <param name="passDown">需要在完成时传给CompletedEventHandler委托的东西</param>
 public UdpNetworkWorker(CompletedEventHandler completedEventHandler, ExchangeCode operation, byte[] beSendedData, object passDown = null)
     : base(completedEventHandler, operation, beSendedData, passDown)
 {
 }