public void Respond(KayakContext context, Action<Exception> callback) { try { var invocationInfo = (InvocationInfo)context.Items[InvocationInfoContextKey]; var invocation = new KayakInvocation(context, invocationInfo); // TODO :Ferhat bunu da ben ekledim. invocation.Context.Activator.AddInstances(_Instances); bool cancel = RaiseInvoking(invocation); if (cancel) callback(null); else { AddBindersAndHandlers(invocation); invocation.InvokeWithCallback(e => { RaiseInvoked(invocation, e); callback(e); }); } } catch (Exception e) { callback(e); } }
public KayakInvocation(KayakContext context, InvocationInfo info) { Context = context; Info = info; Binders = new List<IParameterBinder>(); Handlers = new List<IResultHandler>(); }
internal MappingEventArgs(KayakContext context, InvocationInfo invocationInfo) { Context = context; InvocationInfo = invocationInfo; }
InvocationInfo RaiseMapping(KayakContext context, InvocationInfo invocationInfo) { if (Mapping != null) { var mappingArgs = new MappingEventArgs(context, invocationInfo); Mapping(this, mappingArgs); invocationInfo = mappingArgs.InvocationInfo; } return invocationInfo; }
MethodInfo GetMethodForContext(KayakContext context) { bool invalidVerb = false; MethodInfo method = MethodMap.GetMethodForContext(context, out invalidVerb); if (invalidVerb) method = typeof(InvalidMethodResponse).GetMethod("Respond"); return method; }
public void WillRespond(KayakContext context, Action<bool, Exception> callback) { try { InvocationInfo invocationInfo = new InvocationInfo(); invocationInfo.Method = GetMethodForContext(context); invocationInfo = RaiseMapping(context, invocationInfo); bool willRespond = invocationInfo.Method != null; if (willRespond) context.Items[InvocationInfoContextKey] = invocationInfo; callback(willRespond, null); } catch (Exception e) { callback(false, e); } }