public void SetAction(Keys key, Action <TTarget> action, bool isConsumeKey) { if (_prefixedKeyMaps != null && _prefixedKeyMaps.ContainsKey(key)) { UnsetPrefix(key); } _keyToActions[key] = new ActionRegistration(action, isConsumeKey); }
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); } } }
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); }
/// <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; }
/// <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; }