Search in sources :

Example 1 with PerlValueRequestDescriptor

use of com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueRequestDescriptor in project Perl5-IDEA by Camelcade.

the class PerlDebugUtil method requestAndComputeChildren.

public static void requestAndComputeChildren(@NotNull final XCompositeNode node, final PerlStackFrame perlStackFrame, final int[] offset, final int size, String key) {
    PerlDebugThread thread = perlStackFrame.getPerlExecutionStack().getSuspendContext().getDebugThread();
    final int frameSize = XCompositeNode.MAX_CHILDREN_TO_SHOW;
    thread.sendCommandAndGetResponse("getchildren", new PerlValueRequestDescriptor(offset[0], frameSize, key), new PerlDebuggingTransactionHandler() {

        @Override
        public void run(JsonObject jsonObject, JsonDeserializationContext jsonDeserializationContext) {
            PerlValueDescriptor[] descriptors = jsonDeserializationContext.deserialize(jsonObject.getAsJsonArray("data"), PerlValueDescriptor[].class);
            XValueChildrenList list = new XValueChildrenList();
            for (PerlValueDescriptor descriptor : descriptors) {
                list.add(new PerlXNamedValue(descriptor, perlStackFrame));
                offset[0]++;
            }
            boolean isLast = offset[0] >= size;
            node.addChildren(list, isLast);
            if (!isLast) {
                node.tooManyChildren(size - offset[0]);
            }
        }
    });
}
Also used : XValueChildrenList(com.intellij.xdebugger.frame.XValueChildrenList) PerlValueRequestDescriptor(com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueRequestDescriptor) JsonDeserializationContext(com.google.gson.JsonDeserializationContext) PerlValueDescriptor(com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueDescriptor) PerlDebuggingTransactionHandler(com.perl5.lang.perl.idea.run.debugger.protocol.PerlDebuggingTransactionHandler) PerlDebugThread(com.perl5.lang.perl.idea.run.debugger.PerlDebugThread) JsonObject(com.google.gson.JsonObject) PerlXNamedValue(com.perl5.lang.perl.idea.run.debugger.values.PerlXNamedValue) PerlDebuggingEventBreakpoint(com.perl5.lang.perl.idea.run.debugger.protocol.PerlDebuggingEventBreakpoint) XLineBreakpoint(com.intellij.xdebugger.breakpoints.XLineBreakpoint)

Aggregations

JsonDeserializationContext (com.google.gson.JsonDeserializationContext)1 JsonObject (com.google.gson.JsonObject)1 XLineBreakpoint (com.intellij.xdebugger.breakpoints.XLineBreakpoint)1 XValueChildrenList (com.intellij.xdebugger.frame.XValueChildrenList)1 PerlDebugThread (com.perl5.lang.perl.idea.run.debugger.PerlDebugThread)1 PerlDebuggingEventBreakpoint (com.perl5.lang.perl.idea.run.debugger.protocol.PerlDebuggingEventBreakpoint)1 PerlDebuggingTransactionHandler (com.perl5.lang.perl.idea.run.debugger.protocol.PerlDebuggingTransactionHandler)1 PerlValueDescriptor (com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueDescriptor)1 PerlValueRequestDescriptor (com.perl5.lang.perl.idea.run.debugger.protocol.PerlValueRequestDescriptor)1 PerlXNamedValue (com.perl5.lang.perl.idea.run.debugger.values.PerlXNamedValue)1