MCPcopy Create free account
hub / github.com/deepnote/vscode-deepnote / ProtocolParser

Class ProtocolParser

src/notebooks/debugger/protocolParser.node.ts:34–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

32 * @implements {IProtocolParser}
33 */
34export class ProtocolParser implements IProtocolParser {
35 private rawData = Buffer.concat([]);
36 private contentLength: number = -1;
37 private disposed: boolean = false;
38 private stream?: Readable;
39 private events: EventEmitter;
40 constructor() {
41 this.events = new EventEmitter();
42 }
43 public dispose() {
44 if (this.stream) {
45 this.stream.removeListener('data', this.dataCallbackHandler);
46 this.stream = undefined;
47 }
48 }
49 public connect(stream: Readable) {
50 this.stream = stream;
51 stream.addListener('data', this.dataCallbackHandler);
52 }
53 public on(event: string | symbol, listener: Listener): this {
54 this.events.on(event, listener);
55 return this;
56 }
57 public once(event: string | symbol, listener: Listener): this {
58 this.events.once(event, listener);
59 return this;
60 }
61 private dataCallbackHandler = (data: string | Buffer) => {
62 this.handleData(data as Buffer);
63 };
64 private dispatch(body: string): void {
65 const message = JSON.parse(body) as DebugProtocol.ProtocolMessage;
66
67 switch (message.type) {
68 case 'event': {
69 const event = message as DebugProtocol.Event;
70 if (typeof event.event === 'string') {
71 this.events.emit(`${message.type}_${event.event}`, event);
72 }
73 break;
74 }
75 case 'request': {
76 const request = message as DebugProtocol.Request;
77 if (typeof request.command === 'string') {
78 this.events.emit(`${message.type}_${request.command}`, request);
79 }
80 break;
81 }
82 case 'response': {
83 const reponse = message as DebugProtocol.Response;
84 if (typeof reponse.command === 'string') {
85 this.events.emit(`${message.type}_${reponse.command}`, reponse);
86 }
87 break;
88 }
89 default: {
90 this.events.emit(`${message.type}`, message);
91 }

Callers

nothing calls this directly

Calls 1

handleDataMethod · 0.95

Tested by

no test coverage detected