Пример #1
0
        /// <summary>
        /// Called when the given client failed to login due to the given reason.
        /// Delays, fires the LoginFailed event and sends the reply.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="error"></param>
        private static void OnLoginError(IAuthClient client, AccountStatus error)
        {
            TimeoutWaitHandle delayHandle;

            if (!failedLogins.TryGetValue(client.ClientAddress, out delayHandle))
            {
                failedLogins.Add(client.ClientAddress, delayHandle = new TimeoutWaitHandle(DateTime.Now));
            }
            else
            {
                delayHandle.LastAttempt = DateTime.Now;
            }

            ThreadPool.RegisterWaitForSingleObject(delayHandle.Handle, (state, timedOut) => {
                if (client.IsConnected)
                {
                    var evt = LoginFailed;
                    if (evt != null)
                    {
                        evt(client, error);
                    }
                    SendAuthProofErrorReply(client, error);
                }
            }, null, LoginFailedDelay, true);
        }
Пример #2
0
        public NextActivityKey SayAndWaitTimeout(
            WorkflowExecutionContext context, ActivityParameterDictionary parameters)
        {
            var timeout      = parameters.GetParamValueOrThrow <int>("Timeout");
            var timeoutEvent = new TimeoutWaitHandle(timeout);

            AddInfiniteRepeatTimeoutParameter(parameters);


            return(SayAndWaitEvents(
                       context, parameters, new WaitHandle[] { timeoutEvent }, DefaultNextActivityKeyResolver));
        }
Пример #3
0
		/// <summary>
		/// Called when the given client failed to login due to the given reason.
		/// Delays, fires the LoginFailed event and sends the reply.
		/// </summary>
		/// <param name="client"></param>
		/// <param name="error"></param>
		private static void OnLoginError(IAuthClient client, AccountStatus error)
		{
			TimeoutWaitHandle delayHandle;
			if (!failedLogins.TryGetValue(client.ClientAddress, out delayHandle))
			{
				failedLogins.Add(client.ClientAddress, delayHandle = new TimeoutWaitHandle(DateTime.Now));
			}
			else
			{
				delayHandle.LastAttempt = DateTime.Now;
			}

			ThreadPool.RegisterWaitForSingleObject(delayHandle.Handle, (state, timedOut) => {
				if (client.IsConnected)
				{
					var evt = LoginFailed;
					if (evt != null)
					{
						evt(client, error);
					}
					SendAuthProofErrorReply(client, error);
				}
			}, null, LoginFailedDelay, true);
		}