예제 #1
0
파일: Debugger.cs 프로젝트: jdruin/F5Eagle
        ///////////////////////////////////////////////////////////////////////

        #region Callback Methods
        private ReturnCode InterruptCallback(
            Interpreter interpreter, /* NOTE: Parent interpreter. */
            InterruptType interruptType,
            IClientData clientData,
            ref Result error
            ) /* throw */
        {
            //
            // NOTE: If the are no callback arguments configured, just skip it
            //       and return success.
            //
            StringList arguments = CallbackArguments;

            if (arguments == null) /* NOTE: Disabled? */
            {
                return(ReturnCode.Ok);
            }

            Interpreter debugInterpreter = this.interpreter;

            if (debugInterpreter == null)
            {
                error = "debugger interpreter not available";
                return(ReturnCode.Error);
            }

            //
            // NOTE: *WARNING* This is a cross-interpreter call, do NOT dispose
            //       the parent interpreter because we do not own it.  This is
            //       guaranteed by using the NoDispose object flag (indirectly)
            //       here.
            //
            ICallback callback = CommandCallback.Create(
                MarshalFlags.Default, CallbackFlags.Default,
                ObjectFlags.Callback, ByRefArgumentFlags.None,
                debugInterpreter, clientData, null, new StringList(
                    arguments), ref error);

            if (callback == null)
            {
                return(ReturnCode.Error);
            }

            try
            {
                callback.FireEventHandler(this,
                                          RuntimeOps.GetInterruptEventArgs(interpreter,
                                                                           interruptType, clientData) as EventArgs);

                return(ReturnCode.Ok);
            }
            catch (Exception e)
            {
                error = e;
            }

            return(ReturnCode.Error);
        }
예제 #2
0
파일: WebOps.cs 프로젝트: jdruin/F5Eagle
        ///////////////////////////////////////////////////////////////////////

        #region Private Download Event Handlers
        #region Download Data Event Handlers
        private static void DownloadDataAsyncCompleted(
            object sender,
            DownloadDataCompletedEventArgs e
            )
        {
            try
            {
                if (e == null)
                {
                    return;
                }

                ICallback callback = e.UserState as ICallback;

                if (callback == null)
                {
                    return;
                }

                Uri         uri        = null;
                IClientData clientData = callback.ClientData;

                if (clientData != null)
                {
                    IAnyPair <WebClient, Uri> anyPair =
                        clientData.Data as IAnyPair <WebClient, Uri>;

                    if (anyPair != null)
                    {
                        WebClient webClient = anyPair.X;

                        if (webClient != null)
                        {
                            webClient.Dispose();
                            webClient = null;
                        }

                        uri = anyPair.Y;
                    }

                    clientData.Data = null;
                }

                /* NO RESULT */
                callback.FireEventHandler(sender, e,
                                          GetAsyncCompletedArguments(
                                              uri, null, null, null, null, e));
            }
            catch (Exception ex)
            {
                DebugOps.Complain(ReturnCode.Error, ex);
            }
        }
예제 #3
0
파일: WebOps.cs 프로젝트: jdruin/F5Eagle
        ///////////////////////////////////////////////////////////////////////

        #region Upload Values Event Handlers
        private static void UploadValuesAsyncCompleted(
            object sender,
            UploadValuesCompletedEventArgs e
            )
        {
            try
            {
                if (e == null)
                {
                    return;
                }

                ICallback callback = e.UserState as ICallback;

                if (callback == null)
                {
                    return;
                }

                Uri    uri    = null;
                string method = null;
                NameValueCollection collection = null;
                IClientData         clientData = callback.ClientData;

                if (clientData != null)
                {
                    IAnyTriplet <WebClient, Uri, IAnyPair <string, NameValueCollection> >
                    anyTriplet = clientData.Data as
                                 IAnyTriplet <WebClient, Uri, IAnyPair <string, NameValueCollection> >;

                    if (anyTriplet != null)
                    {
                        WebClient webClient = anyTriplet.X;

                        if (webClient != null)
                        {
                            webClient.Dispose();
                            webClient = null;
                        }

                        uri = anyTriplet.Y;

                        IAnyPair <string, NameValueCollection>
                        anyPair = anyTriplet.Z;

                        if (anyPair != null)
                        {
                            method     = anyPair.X;
                            collection = anyPair.Y;
                        }
                    }

                    clientData.Data = null;
                }

                /* NO RESULT */
                callback.FireEventHandler(sender, e,
                                          GetAsyncCompletedArguments(
                                              uri, method, null, collection, null, e));
            }
            catch (Exception ex)
            {
                DebugOps.Complain(ReturnCode.Error, ex);
            }
        }