public VoidResult CheckWalletActivationCode(int code)
        {
            try
            {
                var userId = ClaimPrincipalFactory.GetUserId(User);
                var user   = _repository.Users.FindByCondition(c => c.Id == userId).FirstOrDefault();

                var now = DateTime.Now.Ticks;
                var s   = _repository.UserActivation.FindByCondition(c =>
                                                                     c.UserId == user.Id && c.EndDateTime > now && c.LoginType == 3 && c.SendedCode == code).FirstOrDefault();
                if (s == null)
                {
                    var ress = VoidResult.GetFailResult("کد وارد شده جهت تغییر کلمه عبور صحیح نمی باشد.");
                    _logger.LogData(MethodBase.GetCurrentMethod(), ress, null, code);
                    return(ress);
                }

                var customer = _repository.Customer.FindByCondition(c => c.UserId == userId).FirstOrDefault();
                customer.HaveWallet = true;

                _repository.Customer.Update(customer);
                _repository.Save();
                var finalres = VoidResult.GetSuccessResult("کیف پول با موفقیت فعال شد .");
                _logger.LogData(MethodBase.GetCurrentMethod(), finalres, null, code);
                return(finalres);
            }
            catch (Exception e)
            {
                _logger.LogError(e, MethodBase.GetCurrentMethod(), code);
                return(VoidResult.GetFailResult(e.Message));
            }
        }
        public VoidResult SellerRegisterConfirm_UI()
        {
            try
            {
                var seller = _repository.Seller.FindByCondition(c => c.UserId == ClaimPrincipalFactory.GetUserId(User)).FirstOrDefault();

                if (seller == null)
                {
                    var ress = VoidResult.GetFailResult("فروشنده پیدا نشد!");
                    _logger.LogData(MethodBase.GetCurrentMethod(), ress, null);
                    return(ress);
                }

                var requiredDocumentList   = _repository.Document.FindByCondition(c => c.CatDocument.Rkey == 1 && c.IsRequired == true && c.Ddate == null && c.DaDate == null).ToList();
                var SellerUploadedDocument = _repository.SellerDocument.FindByCondition(c => c.SellerId == seller.Id && !string.IsNullOrWhiteSpace(c.FileUrl) && c.Document.IsRequired == true).ToList();

                if (requiredDocumentList.Count != SellerUploadedDocument.Count)
                {
                    var ress = VoidResult.GetFailResult("تمامی مدارک بارگزاری نشده است!");
                    _logger.LogData(MethodBase.GetCurrentMethod(), ress, null);
                    return(ress);
                }


                var finalres = VoidResult.GetSuccessResult();
                _logger.LogData(MethodBase.GetCurrentMethod(), finalres, null);
                return(finalres);
            }
            catch (Exception e)
            {
                _logger.LogError(e, MethodBase.GetCurrentMethod());
                return(VoidResult.GetFailResult(e.Message));
            }
        }
Example #3
0
        /// <summary>
        /// Execute handler
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="process"></param>
        /// <param name="processType"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public TResult Execute <TResult>(IBaseProcess <TResult> process, Type processType, params object[] args) where TResult : VoidResult, new()
        {
            var strategyHandler = SystemBootstrapper.GetInstance <IStrategyHandler>();

            if (strategyHandler.IsNull() || !strategyHandler.AutoHandleErrorProcesses)
            {
                try
                {
                    return(Next.Execute(process, processType, args));
                }
                catch (Exception ex)
                {
                    return(VoidResult.FaultedResult <TResult>(ex));
                }
            }

            var strategyResult = strategyHandler.Execute(() => Next.Execute(process, processType, args));

            if (strategyResult.Exception != null)
            {
                return(VoidResult.FaultedResult <TResult>(strategyResult.Exception));
            }

            return(strategyResult.Result);
        }
Example #4
0
        public VoidResult Initialize(SaveAndLoad sal)
        {
            this.SaveAndLoad = sal;
            this.SaveAndLoad.Pyrite = this;

            var result = new VoidResult();

            ScenariosPool = new ScenariosPool();
            ScenariosPool.Pyrite = this;
            ScenariosPool.Initialize();
            Log.Write("ScenariosPool initialized");

            ModulesControl = new ModulesControl();
            ModulesControl.Pyrite = this;
            result.AddExceptions(ModulesControl.Initialize().Exceptions);
            Log.Write("ModulesControl initialized");
            ServerThreading = new PyriteCore.ServerThreading();
            ServerThreading.Pyrite = this;
            ServerThreading.ServerStarted += () => ScenariosPool.StartActiveScenarios();
            Log.Write("ScenariosPool items started");
            ServerThreading.Initialize();
            Log.Write("ServerThreading started");

            result.AddExceptions(SaveAndLoad.Load().Exceptions);
            result.AddExceptions(ServerThreading.BeginStart().Exceptions);

            return result;
        }
Example #5
0
        /// <summary>
        /// Execute handler
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="process"></param>
        /// <param name="processType"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public TResult Execute <TResult>(IBaseProcess <TResult> process, Type processType, params object[] args) where TResult : VoidResult, new()
        {
            // get authorize attrigute
            var attributes = processType.GetCustomAttributes(typeof(SignalsAuthorizeAttribute), false).Cast <SignalsAuthorizeAttribute>().ToList();

            // if no attribute is present the request is valid
            if (!attributes.Any())
            {
                return(Next.Execute(process, processType, args));
            }

            var correctMethod = false;

            foreach (var attribute in attributes)
            {
                // try authorize the user
                correctMethod |= attribute.Authorize(processType.Name);
            }

            if (!correctMethod)
            {
                return(VoidResult.FaultedResult <TResult>(new AuthorizationErrorInfo()));
            }

            return(Next.Execute(process, processType, args));
        }
Example #6
0
 protected override VoidResult <ResponseError> Shutdown()
 {
     Logger.Instance.Log("Language Server is about to shutdown.");
     // WORKAROUND: Language Server does not receive an exit notification.
     Task.Delay(1000).ContinueWith(_ => Environment.Exit(0));
     return(VoidResult <ResponseError> .Success());
 }
Example #7
0
        //Action之前执行
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (!context.ModelState.IsValid)
            {
                //定义无返回值的错误信息描述
                var response = new VoidResult {
                    StatusCode = (int)ApiResponseStatusCode.ParameterError
                };

                foreach (var item in context.ModelState.Values)
                {
                    foreach (var error in item.Errors)
                    {
                        if (!response.Message.IsNullOrEmpty())
                        {
                            response.Message += "|";
                        }
                        response.Message += error.ErrorMessage;
                    }
                }

                //Json序列化配置,取消默认驼峰
                var serializerSettings = new JsonSerializerSettings();
                serializerSettings.ContractResolver = new DefaultContractResolver();

                context.Result = new JsonResult(response, serializerSettings);
            }
        }
Example #8
0
        public static IActionResult Result(this Controller controller, VoidResult result)
        {
            var response = new ObjectResult(result);

            response.StatusCode = result.Success ? 200 : 500;
            return(response);
        }
Example #9
0
        public Result <VoidResult> SetPaymentMethods(SetPaymentArgs args)
        {
            var result = new Result <VoidResult>();
            var model  = new VoidResult();

            try
            {
                result.SetResult(model);
                var currentCart = this.CartManager.GetCurrentCart(
                    this.StorefrontContext.ShopName,
                    this.VisitorContext.ContactId);
                if (!currentCart.ServiceProviderResult.Success)
                {
                    result.SetErrors(currentCart.ServiceProviderResult);
                    return(result);
                }

                var updateCartResponse = this.CartManager.UpdateCart(
                    this.StorefrontContext.ShopName,
                    currentCart.Result,
                    new CartBase
                {
                    Email = string.IsNullOrWhiteSpace(args.BillingAddress.Email)
                                    ? this.VisitorContext.CurrentUser.Email
                                    : args.BillingAddress.Email
                });

                if (!updateCartResponse.ServiceProviderResult.Success &&
                    updateCartResponse.ServiceProviderResult.SystemMessages.Any())
                {
                    result.SetErrors(updateCartResponse.ServiceProviderResult);
                    return(result);
                }

                var billingParty         = this.EntityMapper.MapToPartyEntity(args.BillingAddress);
                var federatedPaymentArgs = this.EntityMapper.MapToFederatedPaymentArgs(args.FederatedPayment);

                var paymentInfoResponse = this.CartManager.AddPaymentInfo(
                    this.StorefrontContext.ShopName,
                    updateCartResponse.Result,
                    billingParty,
                    federatedPaymentArgs);

                if (!paymentInfoResponse.ServiceProviderResult.Success)
                {
                    result.SetErrors(paymentInfoResponse.ServiceProviderResult);
                    return(result);
                }
            }
            catch (Exception ex)
            {
                result.SetErrors(nameof(this.SetPaymentMethods), ex);
            }

            return(result);
        }
Example #10
0
        /// <summary>
        /// 请求失败,无返回值
        /// </summary>
        /// <param name="StatusCode">错误状态码</param>
        /// <param name="Message">返回信息</param>
        /// <returns></returns>
        protected VoidResult Error(int StatusCode, string Message)
        {
            var response = new VoidResult
            {
                StatusCode = StatusCode,
                Message    = Message
            };

            return(response);
        }
Example #11
0
        /// <summary>
        /// 请求成功,无返回值
        /// </summary>
        /// <param name="Message">返回信息</param>
        /// <returns></returns>
        protected VoidResult Success(string Message)
        {
            var response = new VoidResult
            {
                StatusCode = (int)ApiResponseStatusCode.Success,
                Message    = Message
            };

            return(response);
        }
Example #12
0
        public VoidResult DeleteCustomer(int customerId)
        {
            var deleteCustomer = _customerRepository.GetById(customerId);

            if (deleteCustomer != null)
            {
                _customerRepository.Delete(deleteCustomer.Id);
                return(VoidResult.Ok());
            }
            else
            {
                return(MethodResult <Customer> .CreateFaultedResult("The customer with this Id can't be found."));
            }
        }
Example #13
0
    public virtual GameObject CheckColiderByCondition(Collider col, Func <CharacterState, bool> func)
    {
        GameObject result = null;

        if (((1 << col.gameObject.layer) & GameLibrary.GetAllLayer()) != 0)
        {
            CharacterState mCurTargetCs = col.GetComponent <CharacterState>();
            if (mCurTargetCs != null && func(mCurTargetCs) && CheckInView(mCurTargetCs, attackerCs))
            {
                result = col.gameObject;
            }
        }
        return(result);
    }
Example #14
0
        public VoidResult DeleteUser(int userId)
        {
            var deleteUser = _userRepository.GetById(userId);

            if (deleteUser != null)
            {
                _userRepository.Delete(deleteUser.Id);
                return(VoidResult.Ok());
            }
            else
            {
                return(VoidResult.CreateFaultedResult("The user can't be found."));
            }
        }
        public VoidResult DeleteAsset(int assetId)
        {
            var deleteAsset = _assetRepository.GetById(assetId);

            if (deleteAsset != null)
            {
                _assetRepository.Delete(assetId);
                return(VoidResult.Ok());
            }
            else
            {
                return(VoidResult.CreateFaultedResult("The asset can't be found."));
            }
        }
Example #16
0
        public static VoidResultDto ToCanonical(this VoidResult source)
        {
            if (source == null)
            {
                throw new NullException(() => source);
            }

            var dest = new VoidResultDto
            {
                Successful = source.Successful,
                Messages   = source.Messages
            };

            return(dest);
        }
Example #17
0
        public VoidResult DeleteTicketItem(int id)
        {
            var deleteTicketItem = _ticketItemRepository.GetById(id);

            if (deleteTicketItem != null)
            {
                _ticketItemRepository.Delete(id);
                return(VoidResult.Ok());
            }
            else
            {
                return(VoidResult.CreateFaultedResult("The ticketItem can't be found."));
            }
            throw new NotImplementedException();
        }
Example #18
0
        /// <summary>
        /// Execute handler
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="process"></param>
        /// <param name="processType"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public TResult Execute <TResult>(IBaseProcess <TResult> process, Type processType, params object[] args) where TResult : VoidResult, new()
        {
            // Get guard attribute
            var guardAttributes = processType.GetCustomAttributes(typeof(SignalsGuardAttribute), false).Cast <SignalsGuardAttribute>().ToList();

            foreach (var guardAttribute in guardAttributes)
            {
                var guardResult = guardAttribute.Check(process.BaseContext);
                if (guardResult != null)
                {
                    return(VoidResult.FaultedResult <TResult>(guardResult));
                }
            }

            return(Next.Execute(process, processType, args));
        }
Example #19
0
        /// <summary>
        /// Handle the request
        /// </summary>
        /// <returns></returns>
        public TResponse Dispatch <T1, T2, T3, TResponse>(Type processType, T1 obj1, T2 obj2, T3 obj3)
            where TResponse : VoidResult, new()
        {
            // create instance
            var process = ProcessFactory.Create <TResponse>(processType);

            if (process.IsNull())
            {
                return(VoidResult.FaultedResult <TResponse>());
            }

            // execute process
            var response = ProcessExecutor.Execute(process, obj1, obj2, obj3);

            return(response);
        }
Example #20
0
        /// <summary>
        /// Handle the request
        /// </summary>
        /// <returns></returns>
        public TResponse Dispatch <TProcess, T1, T2, TResponse>(T1 obj1, T2 obj2)
            where TProcess : IBaseProcess <TResponse>, new()
            where TResponse : VoidResult, new()
        {
            // create instance
            var process = ProcessFactory.Create <TResponse>(typeof(TProcess));

            if (process.IsNull())
            {
                return(VoidResult.FaultedResult <TResponse>());
            }

            // execute process
            var response = ProcessExecutor.Execute(process, obj1, obj2);

            return(response);
        }
Example #21
0
        /// <summary>
        /// Create serialized http string content
        /// </summary>
        /// <param name="processType"></param>
        /// <param name="response"></param>
        /// <returns></returns>
        public static StringContent ToHttpContent(this Type processType, VoidResult response)
        {
            var attributes = processType.GetCustomAttributes(typeof(SignalsApiAttribute), false).Cast <SignalsApiAttribute>().ToList();

            foreach (var attribute in attributes)
            {
                if (attribute.ResponseType == SerializationFormat.Xml)
                {
                    return(new StringContent(response.SerializeXml(), System.Text.Encoding.UTF8, "application/xml"));
                }
                else if (attribute.ResponseType == SerializationFormat.Xml)
                {
                    return(new StringContent(response.SerializeJson(), System.Text.Encoding.UTF8, "application/json"));
                }
            }

            return(new StringContent(response.SerializeJson(), System.Text.Encoding.UTF8, "application/json"));
        }
        public IVoidResult AddStudent(Student student)
        {
            var result = new VoidResult();

            if (Students.Any(s => s.SurName.Equals(student.SurName, StringComparison.InvariantCultureIgnoreCase)))
            {
                return(result.AddErrorMessage("Another student with this surname already exists in this course"));
            }

            Students.Add(student);
            if (student.Courses == null)
            {
                student.Courses = new Collection <Course>();
            }
            student.Courses.Add(this);

            return(result);
        }
Example #23
0
        public static VoidResult ToBusiness(this VoidResultDto source)
        {
            if (source == null)
            {
                throw new NullException(() => source);
            }

            var dest = new VoidResult
            {
                Successful = source.Successful
            };

            if (source.Messages != null)
            {
                dest.Messages = source.Messages;
            }

            return(dest);
        }
Example #24
0
    public virtual float GetTargetRadius(CharacterState target)
    {
        float result = 0;

        if (target != null)
        {
            UnityEngine.AI.NavMeshAgent nav = target.GetComponent <UnityEngine.AI.NavMeshAgent>();
            if (nav != null)
            {
                result = nav.radius;
            }
            else
            {
                CharacterController cc = target.GetComponent <CharacterController>();
                result = cc == null ? result : cc.radius;
            }
        }
        return(result);
    }
        public IVoidResult RemoveStudent(Student student)
        {
            var result = new VoidResult();

            if (!Students.Contains(student))
            {
                return(result.AddErrorMessage(string.Format("{0}'s students collection does not contain this student ({1})", Name, student.FullName)));
            }

            if (student.Courses == null || !student.Courses.Contains(this))
            {
                return(result.AddErrorMessage(string.Format("{0}'s courses collection does not contain this course ({1})", student.FullName, Name)));
            }

            Students.Remove(student);
            student.Courses.Remove(this);

            return(result);
        }
Example #26
0
        public static IResult Combine(params IResult[] results)
        {
            if (results == null)
            {
                throw new NullException(() => results);
            }

            IResult result = new VoidResult
            {
                Successful = true
            };

            foreach (IResult result2 in results)
            {
                result.Successful &= result2.Successful;
                result.Messages.AddRange(result2.Messages);
            }

            return(result);
        }
        /// <summary>
        /// 重写发生异常时,执行得方法
        /// </summary>
        /// <param name="context"></param>
        public override void OnException(ExceptionContext context)
        {
            //定义无返回值的错误信息描述
            var response = new VoidResult();

            if (context.Exception is CustomerException exception)
            {
                response.StatusCode = (int)exception.apiResponseStatusCode;
                response.Message    = exception.Message;

                //是否记录日志
                if (exception.IsWriteLog)
                {
                    //记录异常日志格式
                    string exceptionLog = string.Format(" \r\n【异常类型】:{0} \r\n【异常信息】:{1} \r\n【堆栈调用】:{2}",
                                                        new object[] { context.Exception.GetType().Name, context.Exception.Message, context.Exception.StackTrace });

                    logger.LogError($"WebApi 发生异常 message:{exceptionLog}");
                }
            }
            else
            {
                response.StatusCode = (int)ApiResponseStatusCode.UnExpectError;
                response.Message    = "系统繁忙,稍后重试!";

                //记录异常日志格式
                string exceptionLog = string.Format(" \r\n【异常类型】:{0} \r\n【异常信息】:{1} \r\n【堆栈调用】:{2}",
                                                    new object[] { context.Exception.GetType().Name, context.Exception.Message, context.Exception.StackTrace });

                logger.LogError($"WebApi 发生异常 message:{exceptionLog}");
            }

            //Json序列化配置,取消默认驼峰
            var serializerSettings = new JsonSerializerSettings();

            serializerSettings.ContractResolver = new DefaultContractResolver();

            //将异常信息返回
            context.Result = new JsonResult(response, serializerSettings);
        }
        public VoidResult SendCustomerWalletActivationCode()
        {
            try
            {
                var userId = ClaimPrincipalFactory.GetUserId(User);
                var user   = _repository.Users.FindByCondition(c => c.Id == userId).FirstOrDefault();

                var now = DateTime.Now.Ticks;
                if (_repository.UserActivation
                    .FindByCondition(c => c.UserId == userId && c.EndDateTime > now && c.LoginType == 3).Any())
                {
                    var ress = VoidResult.GetFailResult("کد فعالسازی قبلا برای شما ارسال گردیده است.");
                    _logger.LogData(MethodBase.GetCurrentMethod(), ress, null);
                    return(ress);
                }

                var random = new Random();
                var code   = random.Next(1000, 9999);

                user.UserActivation.Add(new UserActivation
                {
                    SendedCode  = code,
                    EndDateTime = DateTime.Now.AddMinutes(2).Ticks,
                    Cdate       = DateTime.Now.Ticks,
                    LoginType   = 3,
                    UserId      = userId
                });

                var sms      = new SendSMS();
                var bb       = sms.SendWalletActivationSms(user.Mobile.Value, code, user.FullName);
                var finalres = VoidResult.GetSuccessResult("کد فعال سازی برای کیف پول ، با موفقیت ارسال شد");
                _logger.LogData(MethodBase.GetCurrentMethod(), finalres, null);
                return(finalres);
            }
            catch (Exception e)
            {
                _logger.LogError(e, MethodBase.GetCurrentMethod());
                return(VoidResult.GetFailResult(e.Message));
            }
        }
Example #29
0
 /// <summary>
 /// 技能id,攻击对象,回调
 /// </summary>
 public virtual void Init(SkillNode skillNode, GameObject targetTrans, Transform thisTrans, VoidResult action = null)
 {
     result        = action;
     mCurSkillNode = skillNode;
     if (targetTrans != null)
     {
         mHitTargetCs = targetTrans.GetComponent <CharacterState>();
         hit          = mHitTargetCs.mHitPoint;
     }
     if (thisTrans != null)
     {
         attackerTrans = thisTrans;
         attackerCs    = attackerTrans.GetComponent <CharacterState>();
         mResourceRoot = attackerCs.emission.GetEffectResourceRoot();
         if (attackerCs != null)
         {
             groupIndex = (int)attackerCs.groupIndex;
         }
         GameLibrary.Instance().SetSkillDamageCharaData(ref characterData, skillNode, attackerCs);
         if (attackerCs.mCurMobalId == MobaObjectID.HeroShenniu && mCurSkillNode.site == 4)
         {
             GameLibrary.Instance().SetSkillDamageCharaData(ref onceCharacterData, skillNode, attackerCs);
             onceCharacterData.skill_Damage [0] = skillNode.GetSkillBattleValueByRatio(0, attackerCs.CharData, 0.2f);
         }
     }
     //清除所有collider
     SetColliderEnable(transform);
     //属性设置完毕,开始显示播放
     if (mCurSkillNode != null)
     {
         gameObject.SetActive(true);
     }
     else
     {
         Debug.Log(attackerTrans);
     }
 }
Example #30
0
        /// <summary>
        /// Handle process result
        /// </summary>
        /// <typeparam name="TProcess"></typeparam>
        /// <param name="process"></param>
        /// <param name="type"></param>
        /// <param name="response"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public MiddlewareResult HandleAfterExecution <TProcess>(TProcess process, Type type, VoidResult response, IHttpContextWrapper context) where TProcess : IBaseProcess <VoidResult>
        {
            if (response is FileResult fileResponse)
            {
                var statusCode = response.IsSystemFault ? System.Net.HttpStatusCode.InternalServerError :
                                 response.IsFaulted ? System.Net.HttpStatusCode.BadRequest : System.Net.HttpStatusCode.OK;

                // create response
                var httpRespose = new HttpResponseMessage(statusCode)
                {
                    Content = fileResponse.IsNull() ? null : new StreamContent(fileResponse.Result),
                };

                httpRespose.Content.Headers.ContentType        = new MediaTypeHeaderValue(fileResponse.MimeType);
                httpRespose.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                {
                    FileName = fileResponse.FileName
                };
                context.PutResponse(httpRespose);

                // stop handling pipe
                return(MiddlewareResult.StopExecutionAndStopMiddlewarePipe);
            }

            // result is not handled, continue
            return(MiddlewareResult.DoNothing);
        }
Example #31
0
 public override void Init(SkillNode skillNode, GameObject targetTrans, Transform thisTrans, VoidResult action)
 {
     base.Init(skillNode, targetTrans, thisTrans, action);
     if (mCurSkillNode != null)
     {
         mBounceAmount = mCurSkillNode.target_ceiling;
     }
 }
Example #32
0
        public VoidResult BeginStart()
        {
            VoidResult result = new VoidResult();

            if (!IsStopped)
            {
                result.AddException(new Exception("Is started now"));
                return result;
            }

            if (_threadPortOccupations == null)
                _threadPortOccupations = new List<ThreadPortOccupation>();

            if (_activeClients == null)
                _activeClients = new List<IPAddress>();

            IsStopped = false;
            _prepareToStop = false;

            _threadPortDistribution = ThreadHelper.AlterThread(() =>
            {
                _listenerPortDistribution = new TcpListenerEx(Settings.DistributionPort);
                _listenerPortDistribution.Start();
                while (!_prepareToStop)
                {
                    try
                    {
                        using (var client = _listenerPortDistribution.AcceptTcpClient())
                        {
                            var address = ((IPEndPoint)client.Client.RemoteEndPoint).Address;
                            if (!_activeClients.Any(x => x.Equals(address)))
                                _activeClients.Add(address);

                            ThreadPortOccupation occupation = null;

                            while (occupation == null)
                            {
                                occupation = _threadPortOccupations.FirstOrDefault(x => !x.IsOccupiedByClient);
                                if (occupation == null)
                                    Thread.Sleep(10);
                            }

                            SendString(client.GetStream(), occupation.Port.ToString());
                        }
                    }
                    catch (Exception e)
                    {
                        if (e is SocketException && e.Message.Contains("WSACancelBlockingCall"))
                        {
                            //do nothing
                        }
                        else
                            Log.Write(e);
                    }
                }
            });

            for (int i = 0; i < Settings.ActionsPorts.Count; i++)
            {
                try
                {
                    var port = Settings.ActionsPorts[i];

                    var listener = new TcpListenerEx(port);

                    listener.Server.SendTimeout = (int)ServerThreadingSettings.Defaults.SendTimout;
                    listener.Server.ReceiveTimeout = (int)ServerThreadingSettings.Defaults.ReceiveTimout;
                    ThreadPortOccupation portOccupation = null;
                    Thread t = new Thread(() =>
                    {
                        while (true)
                        {
                            try
                            {
                                using (TcpClient client = listener.AcceptTcpClient())
                                {
                                    portOccupation.IsOccupiedByClient = true;

                                    bool resolved = true;
                                    if (Settings.ResolvedIp != null && Settings.ResolvedIp.Any() && !Settings.ResolveAllIp)
                                    {
                                        lock (Settings.ResolvedIp)
                                        {
                                            var ip = ((IPEndPoint)client.Client.RemoteEndPoint).Address;
                                            if (!Settings.ResolvedIp.Where(x => x.Equals(ip)).Any())
                                            {
                                                client.Close();
                                                resolved = false;
                                            }
                                        }
                                    }

                                    if (resolved)
                                    {
                                        var stream = client.GetStream();
                                        var command = GetNextString(stream);

                                        CommandHandling(client, stream, command);
                                    }
                                }
                            }
                            catch (Exception e)
                            {
                                if (e is SocketException && e.Message.Contains("WSACancelBlockingCall"))
                                {
                                    //do nothing
                                }
                                else
                                    Log.Write(e);
                            }

                            portOccupation.IsOccupiedByClient = false;

                            if (!listener.IsActive)
                            {
                                lock (_threadPortOccupations)
                                {
                                    _threadPortOccupations.RemoveAll(x => x.Port == port);

                                    if (!_threadPortOccupations.Any())
                                        IsStopped = true;
                                }
                                break;
                            }
                        }
                    });

                    _threadPortOccupations.Add(portOccupation = new ThreadPortOccupation(t, listener, port));
                    t.IsBackground = false;
                    listener.Start();
                    t.Start();
                }
                catch (Exception e)
                {
                    result.AddException(e);
                }
            }

            if (ServerStarted != null)
                ServerStarted();

            return result;
        }
Example #33
0
        public VoidResult BeginStop(Action callback)
        {
            _whenStoppedCallback = callback;

            var result = new VoidResult();
            try
            {
                _prepareToStop = true;

                _listenerPortDistribution.Stop();

                _threadPortOccupations.ToList().ForEach(x =>
                {
                    x.Listener.Stop();
                });
            }
            catch (Exception e)
            {
                result.AddException(e);
            }

            return result;
        }
Example #34
0
        public VoidResult ReIntialize(Action<VoidResult> callback)
        {
            var result = new VoidResult();
            ModulesControl.Clear();
            ScenariosPool.Clear();

            result.AddExceptions(SaveAndLoad.Load().Exceptions);

            Stop(() =>
            {
                try
                {
                    ServerThreading.BeginStart();
                    Log.Write("ServerThreading started");
                    ServerThreading.ServerStarted += () => ScenariosPool.StartActiveScenarios();
                    Log.Write("ScenariosPool items started");
                    callback(result);
                }
                catch (Exception e)
                {
                    result.AddException(e);
                }
            });

            return result;
        }
Example #35
0
        internal VoidResult Initialize()
        {
            var result = new VoidResult();

            try
            {
                if (_customActions == null)
                    _customActions = new List<Type>();
                else _customActions.Clear();

                if (_customCheckers == null)
                    _customCheckers = new List<Type>();
                else _customCheckers.Clear();

                RegisterAction(new Uri(typeof(PyriteStandartActions.DoNotDeleteThisClass).Assembly.CodeBase).LocalPath);
                RegisterChecker(new Uri(typeof(PyriteStandartActions.DoNotDeleteThisClass).Assembly.CodeBase).LocalPath);
            }
            catch (Exception e)
            {
                result.AddException(e);
            }
            return result;
        }