Search in sources :

Example 1 with BStream

use of org.ballerinalang.model.values.BStream in project ballerina by ballerina-lang.

the class StartForever method execute.

@Override
public void execute(Context context) {
    context.setReturnValues();
    String siddhiApp = context.getStringArgument(0);
    SiddhiAppRuntime siddhiAppRuntime = StreamingRuntimeManager.getInstance().createSiddhiAppRuntime(siddhiApp);
    Set<String> streamIds = siddhiAppRuntime.getStreamDefinitionMap().keySet();
    Map<String, InputHandler> streamSpecificInputHandlerMap = new HashMap<>();
    for (String streamId : streamIds) {
        streamSpecificInputHandlerMap.put(streamId, siddhiAppRuntime.getInputHandler(streamId));
    }
    BRefValueArray inputStreamReferenceArray = (BRefValueArray) context.getRefArgument(0);
    BRefValueArray functionPointerArray = (BRefValueArray) context.getRefArgument(4);
    for (int i = 0; i < inputStreamReferenceArray.size(); i++) {
        BStream stream = (BStream) inputStreamReferenceArray.get(i);
        InputHandler inputHandler = streamSpecificInputHandlerMap.get(stream.getStreamId());
        stream.subscribe(inputHandler);
    }
    for (int i = 0; i < functionPointerArray.size(); i++) {
        BFunctionPointer functionPointer = (BFunctionPointer) functionPointerArray.get(i);
        String functionName = functionPointer.value().getFunctionName();
        String streamId = "stream" + functionName.replaceAll("\\$", "_");
        StreamingRuntimeManager.getInstance().addCallback(streamId, functionPointer, siddhiAppRuntime);
    }
}
Also used : InputHandler(org.ballerinalang.siddhi.core.stream.input.InputHandler) HashMap(java.util.HashMap) BStream(org.ballerinalang.model.values.BStream) SiddhiAppRuntime(org.ballerinalang.siddhi.core.SiddhiAppRuntime) BRefValueArray(org.ballerinalang.model.values.BRefValueArray) BFunctionPointer(org.ballerinalang.model.values.BFunctionPointer)

Example 2 with BStream

use of org.ballerinalang.model.values.BStream in project ballerina by ballerina-lang.

the class Publish method execute.

@Override
public void execute(Context context) {
    BStream stream = (BStream) context.getRefArgument(0);
    BStruct data = (BStruct) context.getRefArgument(1);
    stream.publish(data);
}
Also used : BStruct(org.ballerinalang.model.values.BStruct) BStream(org.ballerinalang.model.values.BStream)

Example 3 with BStream

use of org.ballerinalang.model.values.BStream in project ballerina by ballerina-lang.

the class Subscribe method execute.

@Override
public void execute(Context context) {
    BStream stream = (BStream) context.getRefArgument(0);
    BFunctionPointer functionPointer = (BFunctionPointer) context.getRefArgument(1);
    stream.subscribe(context, functionPointer);
}
Also used : BStream(org.ballerinalang.model.values.BStream) BFunctionPointer(org.ballerinalang.model.values.BFunctionPointer)

Example 4 with BStream

use of org.ballerinalang.model.values.BStream in project ballerina by ballerina-lang.

the class CPU method tryExec.

@SuppressWarnings("rawtypes")
private static void tryExec(WorkerExecutionContext ctx) {
    BLangScheduler.workerRunning(ctx);
    int i;
    int j;
    int cpIndex;
    FunctionCallCPEntry funcCallCPEntry;
    FunctionRefCPEntry funcRefCPEntry;
    TypeRefCPEntry typeRefCPEntry;
    FunctionInfo functionInfo;
    InstructionCALL callIns;
    boolean debugEnabled = ctx.programFile.getDebugger().isDebugEnabled();
    WorkerData currentSF, callersSF;
    int callersRetRegIndex;
    while (ctx.ip >= 0) {
        if (ctx.stop) {
            BLangScheduler.workerDone(ctx);
            return;
        }
        if (debugEnabled && debug(ctx)) {
            return;
        }
        Instruction instruction = ctx.code[ctx.ip];
        int opcode = instruction.getOpcode();
        int[] operands = instruction.getOperands();
        ctx.ip++;
        WorkerData sf = ctx.workerLocal;
        switch(opcode) {
            case InstructionCodes.ICONST:
                cpIndex = operands[0];
                i = operands[1];
                sf.longRegs[i] = ((IntegerCPEntry) ctx.constPool[cpIndex]).getValue();
                break;
            case InstructionCodes.FCONST:
                cpIndex = operands[0];
                i = operands[1];
                sf.doubleRegs[i] = ((FloatCPEntry) ctx.constPool[cpIndex]).getValue();
                break;
            case InstructionCodes.SCONST:
                cpIndex = operands[0];
                i = operands[1];
                sf.stringRegs[i] = ((StringCPEntry) ctx.constPool[cpIndex]).getValue();
                break;
            case InstructionCodes.ICONST_0:
                i = operands[0];
                sf.longRegs[i] = 0;
                break;
            case InstructionCodes.ICONST_1:
                i = operands[0];
                sf.longRegs[i] = 1;
                break;
            case InstructionCodes.ICONST_2:
                i = operands[0];
                sf.longRegs[i] = 2;
                break;
            case InstructionCodes.ICONST_3:
                i = operands[0];
                sf.longRegs[i] = 3;
                break;
            case InstructionCodes.ICONST_4:
                i = operands[0];
                sf.longRegs[i] = 4;
                break;
            case InstructionCodes.ICONST_5:
                i = operands[0];
                sf.longRegs[i] = 5;
                break;
            case InstructionCodes.FCONST_0:
                i = operands[0];
                sf.doubleRegs[i] = 0;
                break;
            case InstructionCodes.FCONST_1:
                i = operands[0];
                sf.doubleRegs[i] = 1;
                break;
            case InstructionCodes.FCONST_2:
                i = operands[0];
                sf.doubleRegs[i] = 2;
                break;
            case InstructionCodes.FCONST_3:
                i = operands[0];
                sf.doubleRegs[i] = 3;
                break;
            case InstructionCodes.FCONST_4:
                i = operands[0];
                sf.doubleRegs[i] = 4;
                break;
            case InstructionCodes.FCONST_5:
                i = operands[0];
                sf.doubleRegs[i] = 5;
                break;
            case InstructionCodes.BCONST_0:
                i = operands[0];
                sf.intRegs[i] = 0;
                break;
            case InstructionCodes.BCONST_1:
                i = operands[0];
                sf.intRegs[i] = 1;
                break;
            case InstructionCodes.RCONST_NULL:
                i = operands[0];
                sf.refRegs[i] = null;
                break;
            case InstructionCodes.IMOVE:
            case InstructionCodes.FMOVE:
            case InstructionCodes.SMOVE:
            case InstructionCodes.BMOVE:
            case InstructionCodes.LMOVE:
            case InstructionCodes.RMOVE:
            case InstructionCodes.IALOAD:
            case InstructionCodes.FALOAD:
            case InstructionCodes.SALOAD:
            case InstructionCodes.BALOAD:
            case InstructionCodes.LALOAD:
            case InstructionCodes.RALOAD:
            case InstructionCodes.JSONALOAD:
            case InstructionCodes.IGLOAD:
            case InstructionCodes.FGLOAD:
            case InstructionCodes.SGLOAD:
            case InstructionCodes.BGLOAD:
            case InstructionCodes.LGLOAD:
            case InstructionCodes.RGLOAD:
            case InstructionCodes.IFIELDLOAD:
            case InstructionCodes.FFIELDLOAD:
            case InstructionCodes.SFIELDLOAD:
            case InstructionCodes.BFIELDLOAD:
            case InstructionCodes.LFIELDLOAD:
            case InstructionCodes.RFIELDLOAD:
            case InstructionCodes.MAPLOAD:
            case InstructionCodes.JSONLOAD:
            case InstructionCodes.ENUMERATORLOAD:
                execLoadOpcodes(ctx, sf, opcode, operands);
                break;
            case InstructionCodes.IASTORE:
            case InstructionCodes.FASTORE:
            case InstructionCodes.SASTORE:
            case InstructionCodes.BASTORE:
            case InstructionCodes.LASTORE:
            case InstructionCodes.RASTORE:
            case InstructionCodes.JSONASTORE:
            case InstructionCodes.IGSTORE:
            case InstructionCodes.FGSTORE:
            case InstructionCodes.SGSTORE:
            case InstructionCodes.BGSTORE:
            case InstructionCodes.LGSTORE:
            case InstructionCodes.RGSTORE:
            case InstructionCodes.IFIELDSTORE:
            case InstructionCodes.FFIELDSTORE:
            case InstructionCodes.SFIELDSTORE:
            case InstructionCodes.BFIELDSTORE:
            case InstructionCodes.LFIELDSTORE:
            case InstructionCodes.RFIELDSTORE:
            case InstructionCodes.MAPSTORE:
            case InstructionCodes.JSONSTORE:
                execStoreOpcodes(ctx, sf, opcode, operands);
                break;
            case InstructionCodes.IADD:
            case InstructionCodes.FADD:
            case InstructionCodes.SADD:
            case InstructionCodes.XMLADD:
            case InstructionCodes.ISUB:
            case InstructionCodes.FSUB:
            case InstructionCodes.IMUL:
            case InstructionCodes.FMUL:
            case InstructionCodes.IDIV:
            case InstructionCodes.FDIV:
            case InstructionCodes.IMOD:
            case InstructionCodes.FMOD:
            case InstructionCodes.INEG:
            case InstructionCodes.FNEG:
            case InstructionCodes.BNOT:
            case InstructionCodes.IEQ:
            case InstructionCodes.FEQ:
            case InstructionCodes.SEQ:
            case InstructionCodes.BEQ:
            case InstructionCodes.REQ:
            case InstructionCodes.TEQ:
            case InstructionCodes.INE:
            case InstructionCodes.FNE:
            case InstructionCodes.SNE:
            case InstructionCodes.BNE:
            case InstructionCodes.RNE:
            case InstructionCodes.TNE:
                execBinaryOpCodes(ctx, sf, opcode, operands);
                break;
            case InstructionCodes.LENGTHOF:
                calculateLength(ctx, operands, sf);
                break;
            case InstructionCodes.TYPELOAD:
                cpIndex = operands[0];
                j = operands[1];
                TypeRefCPEntry typeEntry = (TypeRefCPEntry) ctx.constPool[cpIndex];
                sf.refRegs[j] = new BTypeDescValue(typeEntry.getType());
                break;
            case InstructionCodes.TYPEOF:
                i = operands[0];
                j = operands[1];
                BValue val = sf.refRegs[i];
                if (val == null || (val instanceof BString && ((BString) val).value() == null)) {
                    sf.refRegs[j] = new BTypeDescValue(BTypes.typeNull);
                    break;
                }
                sf.refRegs[j] = new BTypeDescValue(sf.refRegs[i].getType());
                break;
            case InstructionCodes.HALT:
                ctx = handleHalt(ctx);
                if (ctx == null) {
                    return;
                }
                break;
            case InstructionCodes.IGT:
            case InstructionCodes.FGT:
            case InstructionCodes.IGE:
            case InstructionCodes.FGE:
            case InstructionCodes.ILT:
            case InstructionCodes.FLT:
            case InstructionCodes.ILE:
            case InstructionCodes.FLE:
            case InstructionCodes.REQ_NULL:
            case InstructionCodes.RNE_NULL:
            case InstructionCodes.BR_TRUE:
            case InstructionCodes.BR_FALSE:
            case InstructionCodes.GOTO:
            case InstructionCodes.SEQ_NULL:
            case InstructionCodes.SNE_NULL:
                execCmpAndBranchOpcodes(ctx, sf, opcode, operands);
                break;
            case InstructionCodes.TR_RETRY:
                i = operands[0];
                j = operands[1];
                int l = operands[2];
                retryTransaction(ctx, i, j, l);
                break;
            case InstructionCodes.CALL:
                callIns = (InstructionCALL) instruction;
                ctx = BLangFunctions.invokeCallable(callIns.functionInfo, ctx, callIns.argRegs, callIns.retRegs, false, callIns.flags);
                if (ctx == null) {
                    return;
                }
                break;
            case InstructionCodes.VCALL:
                InstructionVCALL vcallIns = (InstructionVCALL) instruction;
                ctx = invokeVirtualFunction(ctx, vcallIns.receiverRegIndex, vcallIns.functionInfo, vcallIns.argRegs, vcallIns.retRegs, vcallIns.flags);
                if (ctx == null) {
                    return;
                }
                break;
            case InstructionCodes.ACALL:
                InstructionACALL acallIns = (InstructionACALL) instruction;
                ctx = invokeAction(ctx, acallIns.actionName, acallIns.argRegs, acallIns.retRegs, acallIns.flags);
                if (ctx == null) {
                    return;
                }
                break;
            case InstructionCodes.TCALL:
                InstructionTCALL tcallIns = (InstructionTCALL) instruction;
                ctx = BLangFunctions.invokeCallable(tcallIns.transformerInfo, ctx, tcallIns.argRegs, tcallIns.retRegs, false, tcallIns.flags);
                if (ctx == null) {
                    return;
                }
                break;
            case InstructionCodes.TR_BEGIN:
                i = operands[0];
                j = operands[1];
                int k = operands[2];
                int h = operands[3];
                beginTransaction(ctx, i, j, k, h);
                break;
            case InstructionCodes.TR_END:
                i = operands[0];
                j = operands[1];
                endTransaction(ctx, i, j);
                break;
            case InstructionCodes.WRKSEND:
                InstructionWRKSendReceive wrkSendIns = (InstructionWRKSendReceive) instruction;
                handleWorkerSend(ctx, wrkSendIns.dataChannelInfo, wrkSendIns.types, wrkSendIns.regs);
                break;
            case InstructionCodes.WRKRECEIVE:
                InstructionWRKSendReceive wrkReceiveIns = (InstructionWRKSendReceive) instruction;
                if (!handleWorkerReceive(ctx, wrkReceiveIns.dataChannelInfo, wrkReceiveIns.types, wrkReceiveIns.regs)) {
                    return;
                }
                break;
            case InstructionCodes.FORKJOIN:
                InstructionFORKJOIN forkJoinIns = (InstructionFORKJOIN) instruction;
                ctx = invokeForkJoin(ctx, forkJoinIns);
                if (ctx == null) {
                    return;
                }
                break;
            case InstructionCodes.THROW:
                i = operands[0];
                if (i >= 0) {
                    BStruct error = (BStruct) sf.refRegs[i];
                    if (error == null) {
                        handleNullRefError(ctx);
                        break;
                    }
                    BLangVMErrors.attachStackFrame(error, ctx);
                    ctx.setError(error);
                }
                handleError(ctx);
                break;
            case InstructionCodes.ERRSTORE:
                i = operands[0];
                sf.refRegs[i] = ctx.getError();
                // clear error
                ctx.setError(null);
                break;
            case InstructionCodes.FPCALL:
                i = operands[0];
                if (sf.refRegs[i] == null) {
                    handleNullRefError(ctx);
                    break;
                }
                cpIndex = operands[1];
                funcCallCPEntry = (FunctionCallCPEntry) ctx.constPool[cpIndex];
                funcRefCPEntry = ((BFunctionPointer) sf.refRegs[i]).value();
                functionInfo = funcRefCPEntry.getFunctionInfo();
                ctx = BLangFunctions.invokeCallable(functionInfo, ctx, funcCallCPEntry.getArgRegs(), funcCallCPEntry.getRetRegs(), false);
                if (ctx == null) {
                    return;
                }
                break;
            case InstructionCodes.FPLOAD:
                i = operands[0];
                j = operands[1];
                funcRefCPEntry = (FunctionRefCPEntry) ctx.constPool[i];
                sf.refRegs[j] = new BFunctionPointer(funcRefCPEntry);
                break;
            case InstructionCodes.I2ANY:
            case InstructionCodes.F2ANY:
            case InstructionCodes.S2ANY:
            case InstructionCodes.B2ANY:
            case InstructionCodes.L2ANY:
            case InstructionCodes.ANY2I:
            case InstructionCodes.ANY2F:
            case InstructionCodes.ANY2S:
            case InstructionCodes.ANY2B:
            case InstructionCodes.ANY2L:
            case InstructionCodes.ANY2JSON:
            case InstructionCodes.ANY2XML:
            case InstructionCodes.ANY2MAP:
            case InstructionCodes.ANY2TYPE:
            case InstructionCodes.ANY2E:
            case InstructionCodes.ANY2T:
            case InstructionCodes.ANY2C:
            case InstructionCodes.ANY2DT:
            case InstructionCodes.NULL2JSON:
            case InstructionCodes.CHECKCAST:
            case InstructionCodes.B2JSON:
            case InstructionCodes.JSON2I:
            case InstructionCodes.JSON2F:
            case InstructionCodes.JSON2S:
            case InstructionCodes.JSON2B:
            case InstructionCodes.NULL2S:
            case InstructionCodes.IS_ASSIGNABLE:
            case InstructionCodes.CHECK_CONVERSION:
                execTypeCastOpcodes(ctx, sf, opcode, operands);
                break;
            case InstructionCodes.I2F:
            case InstructionCodes.I2S:
            case InstructionCodes.I2B:
            case InstructionCodes.I2JSON:
            case InstructionCodes.F2I:
            case InstructionCodes.F2S:
            case InstructionCodes.F2B:
            case InstructionCodes.F2JSON:
            case InstructionCodes.S2I:
            case InstructionCodes.S2F:
            case InstructionCodes.S2B:
            case InstructionCodes.S2JSON:
            case InstructionCodes.B2I:
            case InstructionCodes.B2F:
            case InstructionCodes.B2S:
            case InstructionCodes.DT2XML:
            case InstructionCodes.DT2JSON:
            case InstructionCodes.T2MAP:
            case InstructionCodes.T2JSON:
            case InstructionCodes.MAP2T:
            case InstructionCodes.JSON2T:
            case InstructionCodes.XMLATTRS2MAP:
            case InstructionCodes.S2XML:
            case InstructionCodes.S2JSONX:
            case InstructionCodes.XML2S:
            case InstructionCodes.ANY2SCONV:
                execTypeConversionOpcodes(ctx, sf, opcode, operands);
                break;
            case InstructionCodes.INEWARRAY:
                i = operands[0];
                sf.refRegs[i] = new BIntArray();
                break;
            case InstructionCodes.ARRAYLEN:
                i = operands[0];
                j = operands[1];
                BValue value = sf.refRegs[i];
                if (value == null) {
                    handleNullRefError(ctx);
                    break;
                }
                if (value.getType().getTag() == TypeTags.JSON_TAG) {
                    sf.longRegs[j] = ((BJSON) value).value().size();
                    break;
                }
                sf.longRegs[j] = ((BNewArray) value).size();
                break;
            case InstructionCodes.FNEWARRAY:
                i = operands[0];
                sf.refRegs[i] = new BFloatArray();
                break;
            case InstructionCodes.SNEWARRAY:
                i = operands[0];
                sf.refRegs[i] = new BStringArray();
                break;
            case InstructionCodes.BNEWARRAY:
                i = operands[0];
                sf.refRegs[i] = new BBooleanArray();
                break;
            case InstructionCodes.LNEWARRAY:
                i = operands[0];
                sf.refRegs[i] = new BBlobArray();
                break;
            case InstructionCodes.RNEWARRAY:
                i = operands[0];
                cpIndex = operands[1];
                typeRefCPEntry = (TypeRefCPEntry) ctx.constPool[cpIndex];
                sf.refRegs[i] = new BRefValueArray(typeRefCPEntry.getType());
                break;
            case InstructionCodes.JSONNEWARRAY:
                i = operands[0];
                j = operands[1];
                // This is a temporary solution to create n-valued JSON array
                StringJoiner stringJoiner = new StringJoiner(",", "[", "]");
                for (int index = 0; index < sf.longRegs[j]; index++) {
                    stringJoiner.add(null);
                }
                sf.refRegs[i] = new BJSON(stringJoiner.toString());
                break;
            case InstructionCodes.NEWSTRUCT:
                createNewStruct(ctx, operands, sf);
                break;
            case InstructionCodes.NEWCONNECTOR:
                createNewConnector(ctx, operands, sf);
                break;
            case InstructionCodes.NEWMAP:
                i = operands[0];
                cpIndex = operands[1];
                typeRefCPEntry = (TypeRefCPEntry) ctx.constPool[cpIndex];
                BMapType mapType = (BMapType) typeRefCPEntry.getType();
                sf.refRegs[i] = new BMap<String, BRefType>(mapType);
                break;
            case InstructionCodes.NEWJSON:
                i = operands[0];
                cpIndex = operands[1];
                typeRefCPEntry = (TypeRefCPEntry) ctx.constPool[cpIndex];
                sf.refRegs[i] = new BJSON("{}", typeRefCPEntry.getType());
                break;
            case InstructionCodes.NEWTABLE:
                i = operands[0];
                cpIndex = operands[1];
                typeRefCPEntry = (TypeRefCPEntry) ctx.constPool[cpIndex];
                sf.refRegs[i] = new BTable(typeRefCPEntry.getType());
                break;
            case InstructionCodes.NEWSTREAM:
                i = operands[0];
                cpIndex = operands[1];
                typeRefCPEntry = (TypeRefCPEntry) ctx.constPool[cpIndex];
                StringCPEntry name = (StringCPEntry) ctx.constPool[operands[2]];
                BStream stream = new BStream(typeRefCPEntry.getType(), name.getValue());
                sf.refRegs[i] = stream;
                break;
            case InstructionCodes.NEW_INT_RANGE:
                createNewIntRange(operands, sf);
                break;
            case InstructionCodes.IRET:
                i = operands[0];
                j = operands[1];
                currentSF = ctx.workerLocal;
                callersSF = ctx.workerResult;
                callersRetRegIndex = ctx.retRegIndexes[i];
                callersSF.longRegs[callersRetRegIndex] = currentSF.longRegs[j];
                break;
            case InstructionCodes.FRET:
                i = operands[0];
                j = operands[1];
                currentSF = ctx.workerLocal;
                callersSF = ctx.workerResult;
                callersRetRegIndex = ctx.retRegIndexes[i];
                callersSF.doubleRegs[callersRetRegIndex] = currentSF.doubleRegs[j];
                break;
            case InstructionCodes.SRET:
                i = operands[0];
                j = operands[1];
                currentSF = ctx.workerLocal;
                callersSF = ctx.workerResult;
                callersRetRegIndex = ctx.retRegIndexes[i];
                callersSF.stringRegs[callersRetRegIndex] = currentSF.stringRegs[j];
                break;
            case InstructionCodes.BRET:
                i = operands[0];
                j = operands[1];
                currentSF = ctx.workerLocal;
                callersSF = ctx.workerResult;
                callersRetRegIndex = ctx.retRegIndexes[i];
                callersSF.intRegs[callersRetRegIndex] = currentSF.intRegs[j];
                break;
            case InstructionCodes.LRET:
                i = operands[0];
                j = operands[1];
                currentSF = ctx.workerLocal;
                callersSF = ctx.workerResult;
                callersRetRegIndex = ctx.retRegIndexes[i];
                callersSF.byteRegs[callersRetRegIndex] = currentSF.byteRegs[j];
                break;
            case InstructionCodes.RRET:
                i = operands[0];
                j = operands[1];
                currentSF = ctx.workerLocal;
                callersSF = ctx.workerResult;
                callersRetRegIndex = ctx.retRegIndexes[i];
                callersSF.refRegs[callersRetRegIndex] = currentSF.refRegs[j];
                break;
            case InstructionCodes.RET:
                ctx = handleReturn(ctx);
                if (ctx == null) {
                    return;
                }
                break;
            case InstructionCodes.XMLATTRSTORE:
            case InstructionCodes.XMLATTRLOAD:
            case InstructionCodes.XML2XMLATTRS:
            case InstructionCodes.S2QNAME:
            case InstructionCodes.NEWQNAME:
            case InstructionCodes.NEWXMLELEMENT:
            case InstructionCodes.NEWXMLCOMMENT:
            case InstructionCodes.NEWXMLTEXT:
            case InstructionCodes.NEWXMLPI:
            case InstructionCodes.XMLSEQSTORE:
            case InstructionCodes.XMLSEQLOAD:
            case InstructionCodes.XMLLOAD:
            case InstructionCodes.XMLLOADALL:
            case InstructionCodes.NEWXMLSEQ:
                execXMLOpcodes(ctx, sf, opcode, operands);
                break;
            case InstructionCodes.ITR_NEW:
            case InstructionCodes.ITR_NEXT:
            case InstructionCodes.ITR_HAS_NEXT:
                execIteratorOperation(ctx, sf, instruction);
                break;
            case InstructionCodes.LOCK:
                InstructionLock instructionLock = (InstructionLock) instruction;
                if (!handleVariableLock(ctx, instructionLock.types, instructionLock.varRegs)) {
                    return;
                }
                break;
            case InstructionCodes.UNLOCK:
                InstructionLock instructionUnLock = (InstructionLock) instruction;
                handleVariableUnlock(ctx, instructionUnLock.types, instructionUnLock.varRegs);
                break;
            case InstructionCodes.AWAIT:
                ctx = execAwait(ctx, operands);
                if (ctx == null) {
                    return;
                }
                break;
            default:
                throw new UnsupportedOperationException();
        }
    }
}
Also used : BTable(org.ballerinalang.model.values.BTable) StringCPEntry(org.ballerinalang.util.codegen.cpentries.StringCPEntry) BValue(org.ballerinalang.model.values.BValue) InstructionTCALL(org.ballerinalang.util.codegen.Instruction.InstructionTCALL) InstructionWRKSendReceive(org.ballerinalang.util.codegen.Instruction.InstructionWRKSendReceive) BString(org.ballerinalang.model.values.BString) FunctionCallCPEntry(org.ballerinalang.util.codegen.cpentries.FunctionCallCPEntry) Instruction(org.ballerinalang.util.codegen.Instruction) BIntArray(org.ballerinalang.model.values.BIntArray) BTypeDescValue(org.ballerinalang.model.values.BTypeDescValue) InstructionLock(org.ballerinalang.util.codegen.Instruction.InstructionLock) StringJoiner(java.util.StringJoiner) InstructionFORKJOIN(org.ballerinalang.util.codegen.Instruction.InstructionFORKJOIN) BFunctionPointer(org.ballerinalang.model.values.BFunctionPointer) BRefType(org.ballerinalang.model.values.BRefType) BStruct(org.ballerinalang.model.values.BStruct) TypeRefCPEntry(org.ballerinalang.util.codegen.cpentries.TypeRefCPEntry) BString(org.ballerinalang.model.values.BString) FunctionInfo(org.ballerinalang.util.codegen.FunctionInfo) AttachedFunctionInfo(org.ballerinalang.util.codegen.AttachedFunctionInfo) BRefValueArray(org.ballerinalang.model.values.BRefValueArray) InstructionCALL(org.ballerinalang.util.codegen.Instruction.InstructionCALL) InstructionVCALL(org.ballerinalang.util.codegen.Instruction.InstructionVCALL) BJSON(org.ballerinalang.model.values.BJSON) BStringArray(org.ballerinalang.model.values.BStringArray) BBlobArray(org.ballerinalang.model.values.BBlobArray) BMapType(org.ballerinalang.model.types.BMapType) FunctionRefCPEntry(org.ballerinalang.util.codegen.cpentries.FunctionRefCPEntry) InstructionACALL(org.ballerinalang.util.codegen.Instruction.InstructionACALL) BBooleanArray(org.ballerinalang.model.values.BBooleanArray) BStream(org.ballerinalang.model.values.BStream) BFloatArray(org.ballerinalang.model.values.BFloatArray)

Aggregations

BStream (org.ballerinalang.model.values.BStream)4 BFunctionPointer (org.ballerinalang.model.values.BFunctionPointer)3 BRefValueArray (org.ballerinalang.model.values.BRefValueArray)2 BStruct (org.ballerinalang.model.values.BStruct)2 HashMap (java.util.HashMap)1 StringJoiner (java.util.StringJoiner)1 BMapType (org.ballerinalang.model.types.BMapType)1 BBlobArray (org.ballerinalang.model.values.BBlobArray)1 BBooleanArray (org.ballerinalang.model.values.BBooleanArray)1 BFloatArray (org.ballerinalang.model.values.BFloatArray)1 BIntArray (org.ballerinalang.model.values.BIntArray)1 BJSON (org.ballerinalang.model.values.BJSON)1 BRefType (org.ballerinalang.model.values.BRefType)1 BString (org.ballerinalang.model.values.BString)1 BStringArray (org.ballerinalang.model.values.BStringArray)1 BTable (org.ballerinalang.model.values.BTable)1 BTypeDescValue (org.ballerinalang.model.values.BTypeDescValue)1 BValue (org.ballerinalang.model.values.BValue)1 SiddhiAppRuntime (org.ballerinalang.siddhi.core.SiddhiAppRuntime)1 InputHandler (org.ballerinalang.siddhi.core.stream.input.InputHandler)1