public DebugAdapter(Stream @in, Stream @out, Action <LogCategory, string>?logger, DebugSession.DebugView defaultDebugView) { this.logger = logger ?? ((_, __) => { }); this.defaultDebugView = defaultDebugView; InitializeProtocolClient(@in, @out); Protocol.LogMessage += (sender, args) => this.logger(args.Category, args.Message); Protocol.RegisterRequestType <DebugViewRequest, DebugViewArguments>(a => { HandleDebugViewRequest(a.Arguments); }); }
public static async Task <DebugSession> CreateDebugSession(LaunchArguments arguments, Action <DebugEvent> sendEvent, DebugSession.DebugView defaultDebugView) { var config = arguments.ConfigurationProperties; var sourceFileMap = ParseSourceFileMap(config); var contract = await Contract.Load(config["program"].Value <string>(), sourceFileMap).ConfigureAwait(false); var storages = ParseStorage(contract.ScriptHash, config); var(storedContracts, storedContractStorages) = await ParseStoredContracts(config, sourceFileMap); var invokeScript = BuildInvokeScript(contract.ScriptHash, ParseArguments(contract.EntryPoint, config)); var engine = CreateExecutionEngine(invokeScript, storedContracts.Append(contract), storedContractStorages.Concat(storages), config, sendEvent); var returnTypes = ParseReturnTypes(config).ToList(); return(new DebugSession(engine, storedContracts.Append(contract), sendEvent, returnTypes, defaultDebugView));