Пример #1
0
        public T Run <T>(DataBus dataBus, string code) where T : class
        {
            //string serializedCode = SerializeCode(code);
            string      serializedCode = code;
            DebugAction debugAction    = new DebugAction(dataBus);

            debugAction.CommandLine = serializedCode;
            //string.Format(codeFormat, serializedCode);
            HttpResponseMessage response = debugAction.DoAction();

            Execute excuteObject = debugAction.ResponseData as Execute;

            ActionUtil.StoreMessages(excuteObject.ClientRequestEntity);
            while (excuteObject.ClientRequestEntity.Messages.Rearm)
            {
                //Get messages
                MessageResponseAction messageResponseAction = new MessageResponseAction(dataBus);

                response     = messageResponseAction.DoAction();
                excuteObject = messageResponseAction.ResponseData as Execute;
                ActionUtil.StoreMessages(excuteObject.ClientRequestEntity);
            }
            if (typeof(T) == typeof(JsonRaw))
            {
                JsonRaw jsonRaw = new JsonRaw();
                jsonRaw.Text = excuteObject.ClientRequestEntity.Messages[0].Text;
                //response. GetContent();
                return(jsonRaw as T);
            }
            string resultStr = excuteObject.ClientRequestEntity.Messages[0].Text;

            return(JsonToObject <T>(resultStr));
        }
        public void InitStack(DataBus dataBus)
        {
            DebugAction debugAction = new DebugAction(dataBus);

            debugAction.CommandLine = "stack";
            HttpResponseMessage response = debugAction.DoAction();

            Execute excuteObject = debugAction.ResponseData as Execute;
            //ActionUtil.StoreMessages(excuteObject.ClientRequestEntity);
            ClientRequest clientRequest = excuteObject.ClientRequestEntity;


            if (clientRequest != null)
            {
                DebugTraceRADCall parentRadCall = new DebugTraceRADCall();
                parentRadCall.RADName = clientRequest.Messages.Messages[0].Text;
                topRAD = parentRadCall;

                DebugTraceRADCall childRadCall = parentRadCall;

                for (int i = 1; i < clientRequest.Messages.Messages.Count; i++)
                {
                    childRadCall         = new DebugTraceRADCall();
                    childRadCall.RADName = clientRequest.Messages.Messages[i].Text;
                    childRadCall.Parent  = parentRadCall;
                    parentRadCall.Traces.Add(childRadCall);
                    parentRadCall = childRadCall;
                }
                currentRAD = childRadCall;
                foreach (MessageItem messageItem in clientRequest.Messages.Messages)
                {
                    radStack.Push(messageItem.Text);
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string sessionId           = textBoxCookieId.Text.Trim();
            string authorizationString = textBoxAuthorization.Text.Trim();

            ConnectionInfo    currentConnectionInfo = comboBoxServer.SelectedItem as ConnectionInfo;
            SessionCache      sessionCache          = new SessionCache();
            ConnectionSession connectionSession     = sessionCache[currentConnectionInfo];
            DataBus           dataBus = connectionSession.GetDataBus(sessionId, authorizationString);

            DebugAction debugAction = new DebugAction(dataBus);

            debugAction.CommandLine = textBoxDebug.Text.Trim();
            HttpResponseMessage response = debugAction.DoAction();

            Execute excuteObject = debugAction.ResponseData as Execute;

            ActionUtil.StoreMessages(excuteObject.ClientRequestEntity);

            debugEntity.AddTrace(excuteObject);
            if (excuteObject.ClientRequestEntity == null)
            {
                try
                {
                    SyncBackData(response.CopiedStream, response.ChunkIndexes[1]);
                    //semaphoreEmpty.Release();
                    if (dataSyncThread.ThreadState == ThreadState.Suspended)
                    {
                        dataSyncThread.Resume();
                    }
                }
                catch
                {
                }
                return;
            }
            else if (!excuteObject.ClientRequestEntity.Messages.Rearm)
            {
                return;
            }
            else
            {
                //return;
            }

            while (true)
            {
                DebugResponseAction debugResponse = new DebugResponseAction(dataBus);
                response = debugResponse.DoAction();

                excuteObject = debugResponse.ResponseData as Execute;
                ActionUtil.StoreMessages(excuteObject.ClientRequestEntity);

                debugEntity.AddTrace(excuteObject);
                if (excuteObject.ClientRequestEntity == null)
                {
                    SyncBackData(response.CopiedStream, response.ChunkIndexes[1]);
                    //semaphoreEmpty.Release();
                    if (dataSyncThread.ThreadState == ThreadState.Suspended)
                    {
                        dataSyncThread.Resume();
                    }
                    break;
                }
                else if (excuteObject.ClientRequestEntity.Messages.Rearm == false)
                {
                    //semaphoreEmpty.Release();
                    //if (dataSyncThread.ThreadState == ThreadState.Suspended)
                    //{
                    //    dataSyncThread.Resume();
                    //}
                    //break;
                }
                else
                {
                    //Nothing to do.
                }
            }
        }
        private void SendDebugCommand(object debugCommandObj)
        {
            string debugCommand = debugCommandObj.ToString();

            using (DataBus dataBus = GetDataBus())
            {
                DebugAction debugAction = new DebugAction(dataBus);
                debugAction.CommandLine = debugCommand;
                HttpResponseMessage response = debugAction.DoAction();

                Execute excuteObject = debugAction.ResponseData as Execute;
                ActionUtil.StoreMessages(excuteObject.ClientRequestEntity);

                if (excuteObject.ClientRequestEntity == null)
                {
                    try
                    {
                        needHoldSMClient = false;

                        //SyncBackData(response.CopiedStream, response.ChunkIndexes[1]);
                        SyncBackChunckedData(response.CopiedStream, response.ChunkIndexes);
                        if (dataSyncThread.ThreadState == System.Threading.ThreadState.Suspended)
                        {
                            dataSyncThread.Resume();
                        }
                    }
                    catch
                    {
                        //Nothing to do
                    }
                    return;
                }
                else if (!excuteObject.ClientRequestEntity.Messages.Rearm)
                {
                    debugEntity.AddTrace(excuteObject);
                    return;
                }
                else if (excuteObject.ClientRequestEntity.Name != "message")
                {
                    while (true)
                    {
                        DebugResponseAction debugResponse = new DebugResponseAction(dataBus);
                        response = debugResponse.DoAction();

                        excuteObject = debugResponse.ResponseData as Execute;
                        ActionUtil.StoreMessages(excuteObject.ClientRequestEntity);

                        if (excuteObject.ClientRequestEntity == null)
                        {
                            needHoldSMClient = false;
                            //SyncBackData(response.CopiedStream, response.ChunkIndexes[1]);
                            SyncBackChunckedData(response.CopiedStream, response.ChunkIndexes);
                            //semaphoreEmpty.Release();
                            if (dataSyncThread.ThreadState == System.Threading.ThreadState.Suspended)
                            {
                                dataSyncThread.Resume();
                            }
                            break;
                        }
                        else if (excuteObject.ClientRequestEntity.Messages.Rearm == false)
                        {
                            //semaphoreEmpty.Release();
                            //if (dataSyncThread.ThreadState == ThreadState.Suspended)
                            //{
                            //    dataSyncThread.Resume();
                            //}
                            //break;
                        }
                        else
                        {
                            //Nothing to do.
                        }
                        debugEntity.AddTrace(excuteObject);
                    }
                }
                else
                {
                    //Nothing to do.
                }
            }
        }