public void AppendCallstack(CallStackItem callStack) { if (MyCallstackItem.IsNull() || MyCallstackItem.CallStack.IsNull()) { return; } MyCallstackItem.CallStack.Add(callStack); }
/// <summary> /// Serializes the service instance call stack for transport to the client. /// </summary> /// <param name="value">The call stack item</param> /// <returns>the string representation of the call stack</returns> public string Serialize(CallStackItem value) { using (var stream = new MemoryStream()) { compiledModel.Serialize(stream, value); return(ReadStringFromStream(stream)); } }
private async static void LogCallstack(string filename, CallStackItem callstack) { var file = string.Format(LogPath, filename); using (var stream = File.OpenWrite(file)) { var buffer = JsonConvert.SerializeObject(callstack).GetByteArray(); await stream.WriteAsync(buffer, 0, buffer.Length); await stream.FlushAsync(); } }
public ITracer StartTrace(string taskName, string methodName) { timer = Stopwatch.StartNew(); MyCallstackItem = new CallStackItem { CallStack = new List<CallStackItem>(), Name = taskName, MethodName = methodName, TimeStamp = DateTime.Now }; if (ParentItem.IsInstance()) ParentItem.CallStack.Add(MyCallstackItem); return this; }
public ITracer StartTrace(string taskName, string methodName) { timer = Stopwatch.StartNew(); MyCallstackItem = new CallStackItem { CallStack = new List <CallStackItem>(), Name = taskName, MethodName = methodName, TimeStamp = DateTime.Now }; if (ParentItem.IsInstance()) { ParentItem.CallStack.Add(MyCallstackItem); } return(this); }
public void SetCallStack(CallStackItem callStack) { CallStack = callStack.CallStack; }
public override DynValue Visit(FunctionCallNode functionCallNode) { var name = functionCallNode.FunctionName; var parameters = new ClrFunctionArguments(); foreach (var node in functionCallNode.Parameters) { parameters.Add(Visit(node)); } if (Environment.Functions.ContainsKey(name)) { var scriptFunction = Environment.Functions[name]; if (CallStack.Count > 255) { while (CallStack.Count != 0) { CallStack.Pop(); } throw new RuntimeException("Call stack overflow.", functionCallNode.Line); } var callStackItem = new CallStackItem(name); var iterator = 0; foreach (var parameterName in scriptFunction.ParameterNames) { if (callStackItem.ParameterScope.ContainsKey(parameterName)) { throw new RuntimeException($"Parameter {parameterName} already defined.", functionCallNode.Line); } if (iterator < parameters.Count) { callStackItem.ParameterScope.Add(parameterName, parameters[iterator++]); } else { callStackItem.ParameterScope.Add(parameterName, DynValue.Zero); } } CallStack.Push(callStackItem); var retval = DynValue.Zero; try { retval = ExecuteStatementList(scriptFunction.StatementList).Result; } catch (ScriptTerminationException) { throw; } catch (RuntimeException) { throw; } catch (ExitStatementException) { } catch (Exception e) { if (!(e.InnerException is ScriptTerminationException)) { throw new RuntimeException(e.Message, functionCallNode.Line); } } finally { CallStack.Pop(); } return(retval); } else if (Environment.BuiltIns.ContainsKey(name)) { var clrFunction = Environment.BuiltIns[name]; if (CallStack.Count > 255) { while (CallStack.Count != 0) { CallStack.Pop(); } throw new RuntimeException("Call stack overflow.", functionCallNode.Line); } var callStackitem = new CallStackItem($"kernel![{name}]"); CallStack.Push(callStackitem); DynValue retVal; try { retVal = clrFunction(this, parameters); } finally { CallStack.Pop(); } return(retVal); } else { throw new RuntimeException($"Function '{name}' does not exist.", functionCallNode.Line); } }
public void AppendCallstack(CallStackItem callStack) { }
public void AppendCallstack(CallStackItem callStack) { if(MyCallstackItem.IsNull()||MyCallstackItem.CallStack.IsNull()) return; MyCallstackItem.CallStack.Add(callStack); }
/// <summary> /// Serializes the service instance call stack for transport to the client. /// </summary> /// <param name="value">The call stack item</param> /// <returns>the string representation of the call stack</returns> public string Serialize(CallStackItem value) { return(JsonConvert.SerializeObject(value, JsonSerializerSettings)); }
protected abstract void DoLogging(CallStackItem callStack);