Beispiel #1
0
 public void SetAction(Keys key, Action <TTarget> action, bool isConsumeKey)
 {
     if (_prefixedKeyMaps != null && _prefixedKeyMaps.ContainsKey(key))
     {
         UnsetPrefix(key);
     }
     _keyToActions[key] = new ActionRegistration(action, isConsumeKey);
 }
Beispiel #2
0
        public void Register <T>(object registrant, Action callback) where T : XMessage
        {
            var registration = new ActionRegistration(registrant, callback);

            var t = typeof(T);

            _event.WaitOne(200);
            _event.Reset();
            _get(t).Add(registration);
            _event.Set();
        }
        /// <summary>
        /// WARNING: Pubternal API (internal). Do not use. May change during any update.
        /// </summary>
        /// <param name="action"></param>
        /// <param name="filter"></param>
        public static void AddMaintenanceFunction(Action action, int filter)
        {
            lock ( Sync )
            {
                if (!_initialized)
                {
                    _initialized = true;
                    StartMaintenance();
                }

                var registration = new ActionRegistration(action, filter);
                RegisteredActions.Add(registration);
            }
        }
            public void Then <Target>(Action <T, string, Target> responseAction)
            {
                var regs = new List <ActionRegistration>();
                // Look for media type translator for this target type
                var mediaTypeParsers = _Machine._ParserStore.GetMediaTypeParsers <Target>();

                if (mediaTypeParsers.Any())
                {
                    foreach (var parserInfo in mediaTypeParsers)
                    {
                        var p = parserInfo;
                        ResponseAction <T> action = async(m, l, r) =>
                        {
                            var target = await p.Parse(r.Content);

                            responseAction(m, l, (Target)target);
                        };
                        var registration = new ActionRegistration(_ActionKey, action);
                        _Machine._ResponseActions.Add(registration);
                    }
                }
                else
                {
                    // Find AppSemantic parsers for the target type
                    var semanticParsers = _Machine._ParserStore.GetSemanticParsers <Target>(_ActionKey.LinkRelation);

                    foreach (var parserInfo in semanticParsers)
                    {
                        var key = new ActionKey()
                        {
                            StatusCode   = _ActionKey.StatusCode,
                            ContentType  = new MediaTypeHeaderValue(parserInfo.MediaTypeParser.MediaType),
                            Profile      = parserInfo.ProfileParser.Profile,
                            LinkRelation = parserInfo.ProfileParser.LinkRelation,
                        };
                        ResponseAction <T> action = async(m, l, r) =>
                        {
                            var mt = await parserInfo.MediaTypeParser.Parse(r.Content);

                            var target = (Target)parserInfo.ProfileParser.Parse(mt);
                            responseAction(m, l, target);
                        };

                        var registration = new ActionRegistration(key, action);
                        _Machine._ResponseActions.Add(registration);
                    }
                }
            }
Beispiel #5
0
        public void Register <T>(object registrant, Action callback) where T : XMessage
        {
            var registration = new ActionRegistration(registrant, callback);

            var t = typeof(T);

            Event.WaitOne();
            try
            {
                Get(t).Add(registration);
            }
            finally
            {
                Event.Set();
            }
        }
            public void Then(Func <string, HttpResponseMessage, Task> action)
            {
                var reg = new ActionRegistration(_ActionKey, (m, l, r) => action(l, r));

                _Machine._ResponseActions.Add(reg);
            }
            public void Then(ResponseAction <T> action)
            {
                var reg = new ActionRegistration(_ActionKey, action);

                _Machine._ResponseActions.Add(reg);
            }
Beispiel #8
0
		/// <summary>
		///     Extends existing or creates new action with specified identifier.
		/// </summary>
		/// <param name="action">Action identifier.</param>
		/// <returns>Execution group of existing action or newly created one.</returns>
		public IExecutionGroup ExtendAction( string action )
		{
			ActionRegistration registration;

			if( !_actions.TryGetValue( action ?? DefaultAction, out registration ) )
			{
				registration = new ActionRegistration( action ?? DefaultAction );

				_actions[registration.Name] = registration;
			}

			return registration;
		}
Beispiel #9
0
		/// <summary>
		///     Registers the action.
		/// </summary>
		/// <param name="action">Action identifier.</param>
		/// <returns>Execution group to modify.</returns>
		public IExecutionGroup RegisterAction( string action )
		{
			var registration = new ActionRegistration( action ?? DefaultAction );

			_actions[registration.Name] = registration;

			return registration;
		}