Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
 public KayakInvocation(KayakContext context, InvocationInfo info)
 {
     Context = context;
     Info = info;
     Binders = new List<IParameterBinder>();
     Handlers = new List<IResultHandler>();
 }
Beispiel #3
0
 internal MappingEventArgs(KayakContext context, InvocationInfo invocationInfo)
 {
     Context = context;
     InvocationInfo = invocationInfo;
 }
Beispiel #4
0
        InvocationInfo RaiseMapping(KayakContext context, InvocationInfo invocationInfo)
        {
            if (Mapping != null)
            {
                var mappingArgs = new MappingEventArgs(context, invocationInfo);
                Mapping(this, mappingArgs);
                invocationInfo = mappingArgs.InvocationInfo;
            }

            return invocationInfo;
        }
Beispiel #5
0
        MethodInfo GetMethodForContext(KayakContext context)
        {
            bool invalidVerb = false;

            MethodInfo method = MethodMap.GetMethodForContext(context, out invalidVerb);

            if (invalidVerb)
                method = typeof(InvalidMethodResponse).GetMethod("Respond");

            return method;
        }
Beispiel #6
0
        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);
            }
        }