-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathScriptEngineHub.cs
More file actions
118 lines (96 loc) · 3.69 KB
/
Copy pathScriptEngineHub.cs
File metadata and controls
118 lines (96 loc) · 3.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
namespace V8SignalRDebugging
{
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR;
using V8SignalRDebugging.Debugger;
/// <summary>
/// SignalR hub for interacting with the script engine.
/// </summary>
public class ScriptEngineHub : Hub
{
private readonly ScriptEngineManager m_scriptEngineManager;
public ScriptEngineHub() : this(ScriptEngineManager.Instance) { }
public ScriptEngineHub(ScriptEngineManager scriptEngineManager)
{
m_scriptEngineManager = scriptEngineManager;
}
public async Task Backtrace()
{
var result = await m_scriptEngineManager.Backtrace(Context.ConnectionId);
Clients.All.backtrace(result);
}
public async void ContinueBreakpoint(string stepAction, int? stepCount = null)
{
StepAction eStepAction;
stepAction.TryParseEnum(true, StepAction.Next, out eStepAction);
await m_scriptEngineManager.Continue(Context.ConnectionId, eStepAction, stepCount);
Clients.All.breakpointContinue(stepAction, stepCount);
}
public async Task Disconnect()
{
var result = await m_scriptEngineManager.Disconnect(Context.ConnectionId);
Clients.All.disconnected(result);
}
public async Task Eval(string code)
{
Clients.All.beginEval();
var result = await m_scriptEngineManager.Evaluate(Context.ConnectionId, code);
Clients.All.evalResult(result);
}
public async Task EvalImmediate(string expression)
{
var result = await m_scriptEngineManager.EvalImmediate(Context.ConnectionId, expression);
Clients.All.console(result);
}
public async Task Interrupt()
{
await m_scriptEngineManager.Interrupt(Context.ConnectionId);
Clients.All.interrupt();
}
public async Task GetScopeVariables(int? scopeNumber = null, int? frameNumber = null)
{
var scopeVariables = await m_scriptEngineManager.GetScopeVariables(Context.ConnectionId, scopeNumber, frameNumber);
Clients.All.scopeVariables(scopeNumber, frameNumber, scopeVariables);
}
public async Task Scopes(int? frameNumber = null)
{
var scopes = await m_scriptEngineManager.Scopes(Context.ConnectionId, frameNumber);
Clients.All.scopes(scopes);
}
public async Task SetBreakpoint(int lineNumber, int? column = null, bool enabled = true, string condition = null, int? ignoreCount = 0 )
{
var bp = new Breakpoint
{
LineNumber = lineNumber,
Column = column,
Enabled = enabled,
Condition = condition,
IgnoreCount = ignoreCount
};
var breakpointNumber = await m_scriptEngineManager.SetBreakpoint(Context.ConnectionId, bp);
Clients.All.breakpointSet(new
{
breakpointNumber,
lineNumber,
column,
enabled,
condition,
ignoreCount
});
}
public void ShareCode(string code)
{
Clients.Others.codeUpdated(code);
}
public override Task OnConnected()
{
m_scriptEngineManager.InitiateScriptEngine(Context.ConnectionId);
return base.OnConnected();
}
public override Task OnDisconnected()
{
m_scriptEngineManager.RemoveScriptEngine(Context.ConnectionId);
return base.OnDisconnected();
}
}
}