예제 #1
0
        private Task CreateAndSendCallMessageAsync(CallInfo callInfo, ResolvedCallee callee, PropagationKind propKind)
        {
            var callMessageInfo = new CallMessageInfo(callInfo.Caller, callee.Method, callee.ReceiverType,
                                                      callInfo.ArgumentsPossibleTypes, callInfo.CallNode, callInfo.LHS, propKind);

            var source        = new MethodEntityDescriptor(callInfo.Caller);
            var callerMessage = new CallerMessage(source, callMessageInfo);

            return(this.AnalyzeCalleeAsync(callMessageInfo.Callee, callerMessage, propKind));
        }
예제 #2
0
        private Task CreateAndSendReturnMessageAsync(ReturnInfo returnInfo, PropagationKind propKind)
        {
            var returnMessageInfo = new ReturnMessageInfo(returnInfo.CallerContext.Caller, returnInfo.Callee, returnInfo.ResultPossibleTypes,
                                                          returnInfo.CallerContext.CallNode, returnInfo.CallerContext.LHS, propKind);

            var source        = new MethodEntityDescriptor(returnInfo.Callee);
            var calleeMessage = new CalleeMessage(source, returnMessageInfo);

            return(this.AnalyzeReturnAsync(returnMessageInfo.Caller, calleeMessage, propKind));
        }
        private Task CreateAndSendReturnMessageAsync(ReturnInfo returnInfo, PropagationKind propKind)
        {
            var returnMessageInfo = new ReturnMessageInfo(returnInfo.CallerContext.Caller, returnInfo.Callee, returnInfo.ResultPossibleTypes,
                                                          returnInfo.CallerContext.CallNode, returnInfo.CallerContext.LHS, propKind);

            var source        = new MethodEntityDescriptor(returnInfo.Callee);
            var calleeMessage = new CalleeMessage(source, returnMessageInfo);

            //await WaitQueue(QUEUE_THRESHOLD);
            this.messageWorkList.Enqueue(calleeMessage);
            //this.messageWorkList.Add(calleeMessage);

            return(Task.CompletedTask);
            //return AnalyzeReturnAsync(returnMessageInfo.Caller, calleeMessage, propKind);
        }
예제 #4
0
        private async Task CreateAndSendReturnMessageAsync(ReturnInfo returnInfo, PropagationKind propKind)
        {
            var returnMessageInfo = new ReturnMessageInfo(returnInfo.CallerContext.Caller, returnInfo.Callee, returnInfo.ResultPossibleTypes,
                                                          returnInfo.CallerContext.CallNode, returnInfo.CallerContext.LHS, propKind);

            var source        = new MethodEntityDescriptor(returnInfo.Callee);
            var calleeMessage = new CalleeMessage(source, returnMessageInfo);

            await this.solutionManager.UpdateCounter(1);

            //await WaitQueue(QUEUE_THRESHOLD);
            this.messageWorkList.Enqueue(calleeMessage);
            //this.messageWorkList.Add(calleeMessage);

            //return TaskDone.Done;
        }
        private Task CreateAndSendCallMessageAsync(CallInfo callInfo, ResolvedCallee callee, PropagationKind propKind)
        {
            var callMessageInfo = new CallMessageInfo(callInfo.Caller, callee.Method, callee.ReceiverType,
                                                      callInfo.ArgumentsPossibleTypes, callInfo.CallNode, callInfo.LHS, propKind);

            var source        = new MethodEntityDescriptor(callInfo.Caller);
            var callerMessage = new CallerMessage(source, callMessageInfo);

            //Logger.LogWarning(GrainClient.Logger, "Orchestrator", "CreateAndSendCallMsg", "Enqueuing: {0}", callee);

            //await WaitQueue(QUEUE_THRESHOLD);
            this.messageWorkList.Enqueue(callerMessage);
            //this.messageWorkList.Add(callerMessage);

            return(Task.CompletedTask);
            //return AnalyzeCalleeAsync(callMessageInfo.Callee, callerMessage, propKind);
        }
        public override bool Equals(object obj)
        {
            MethodEntityDescriptor md = obj as MethodEntityDescriptor;

            return(md != null && methodDescriptor.Equals(md.methodDescriptor));
        }