annotate memory_profiler_server.js @ 77:8cf72992387d default tip

add JSONP
author Dion Almaer <dion@mozilla.com>
date Fri, 26 Jun 2009 10:13:32 -0700
parents b87b6ebb6e86
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
73
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
1 // This function is called by the platform whenever an uncaught exception
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
2 // occurs.
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
3
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
4 function handleError() {
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
5 printTraceback(lastExceptionTraceback);
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
6 print(lastException);
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
7 }
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
8
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
9 // This function uses the Python-inspired traceback functionality of the
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
10 // playground to print a stack trace that looks much like Python's.
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
11
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
12 function printTraceback(frame) {
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
13 print("Traceback (most recent call last):");
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
14 if (frame === undefined)
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
15 frame = stack();
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
16 var lines = [];
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
17 while (frame) {
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
18 var line = (' File "' + frame.filename + '", line ' +
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
19 frame.lineNo + ', in ' + frame.functionName);
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
20 lines.splice(0, 0, line);
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
21 frame = frame.caller;
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
22 }
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
23 print(lines.join('\n'));
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
24 }
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
25
77
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
26 function debug(out) {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
27 print("DEBUG: " + out);
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
28 }
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
29
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
30 // Work out if the caller wants the output to be wrapped in a JSONP function wrapper
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
31 function wrapJSONP(path, json) {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
32 var callbackName = path.match(/callback=(\w+)/);
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
33 if (callbackName) {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
34 return callbackName[1] + "(" + json + ")";
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
35 } else {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
36 return json;
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
37 }
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
38 }
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
39
63
4910bc49a182 set GC Zeal to 2 and fixed some bugs exposed by it.
Atul Varma <varmaa@toolness.com>
parents: 54
diff changeset
40 // This is just a test to exercise the code a bit.
4910bc49a182 set GC Zeal to 2 and fixed some bugs exposed by it.
Atul Varma <varmaa@toolness.com>
parents: 54
diff changeset
41 JSON.stringify(getObjectInfo(getGCRoots()[0]));
4910bc49a182 set GC Zeal to 2 and fixed some bugs exposed by it.
Atul Varma <varmaa@toolness.com>
parents: 54
diff changeset
42
50
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43 var socket = new ServerSocket();
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44
67
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
45 var IP = "127.0.0.1";
50
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 var PORT = 8080;
67
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
47 var BASE_URL = "http://" + IP + ":" + PORT;
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
48 var HELP = [
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
49 "REST API methods available:",
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
50 "",
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
51 " /gc-roots JSON array of GC root object IDs.",
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
52 " /objects/{ID} JSON metadata about the given object ID.",
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
53 " /stop Stops the server."];
50
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54
67
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
55 HELP = HELP.join("\r\n");
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
56
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
57 socket.bind(IP, PORT);
50
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 socket.listen();
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 var NEWLINE = "\r\n";
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
61 var DOUBLE_NEWLINE = NEWLINE + NEWLINE;
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
62
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
63 function getHeaders(conn) {
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
64 var headers = "";
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
65 while (1) {
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
66 var character = conn.recv(1);
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
67 if (character == null)
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
68 return null;
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
69 headers += character;
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
70 if (headers.indexOf(DOUBLE_NEWLINE) != -1)
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
71 return headers;
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
72 }
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
73 }
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
74
67
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
75 print("Waiting for requests at " + BASE_URL + ".\n");
a98e6a1144a9 Added some basic help info to the memory profiling server.
Atul Varma <varmaa@toolness.com>
parents: 63
diff changeset
76 print(HELP);
50
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
77
52
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
78 function processRequest(socket) {
50
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
79 var conn = socket.accept();
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
80
52
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
81 try {
50
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
82 var requestHeaders = getHeaders(conn);
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
83 if (requestHeaders == null)
52
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
84 return true;
50
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
85 var requestLines = requestHeaders.split("\r\n");
77
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
86 debug("Request: " + requestLines[0]);
52
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
87 var reqParts = requestLines[0].split(" ");
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
88 var method = reqParts[0];
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
89 var path = reqParts[1];
77
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
90 debug("Path: " + path);
52
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
91
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
92 var code = "200 OK";
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
93 var toSend;
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
94
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
95 // TODO: We'd like to set the MIME type of JSON data to application/json,
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
96 // but Firefox doesn't let us browse a webserver this way, which is
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
97 // annoying, so we're just leaving it at text/plain for now.
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
98
77
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
99 if (path == "/") {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
100 toSend = HELP;
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
101 } else if (path.indexOf("/stop") == 0) {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
102 toSend = "Stopping server now!";
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
103 } else {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
104 if (path.indexOf("/gc-roots") == 0) {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
105 toSend = JSON.stringify(getGCRoots());
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
106 } else {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
107 var objNum = path.match(/^\/objects\/(\d+)/);
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
108 if (objNum) {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
109 //throw new Error('wut');
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
110 objNum = objNum[1];
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
111 debug(objNum);
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
112 var objInfo = getObjectInfo(objNum);
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
113 if (objInfo) {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
114 toSend = JSON.stringify(objInfo);
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
115 } else {
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
116 code = "404 Not Found";
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
117 toSend = "Object " + objNum + " does not exist.";
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
118 }
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
119 }
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
120 }
53
2b22291fa09a added a stub for an /objects/(number) RESTful API method.
Atul Varma <varmaa@toolness.com>
parents: 52
diff changeset
121 }
2b22291fa09a added a stub for an /objects/(number) RESTful API method.
Atul Varma <varmaa@toolness.com>
parents: 52
diff changeset
122
52
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
123 if (!toSend) {
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
124 code = "404 Not Found";
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
125 toSend = "Not found, yo.";
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
126 }
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
127
77
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
128 // maybe wrap the response in JSONP
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
129 toSend = wrapJSONP(path, toSend);
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
130 debug("toSend == " + toSend);
8cf72992387d add JSONP
Dion Almaer <dion@mozilla.com>
parents: 73
diff changeset
131
50
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
132 //print("headers: " + uneval(requestHeaders));
52
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
133 var headerLines = ["HTTP/1.0 " + code,
50
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
134 "Content-Type: text/plain",
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
135 "Connection: close",
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
136 "Content-Length: " + toSend.length];
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
137 var headers = headerLines.join("\r\n");
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
138 var response = headers + DOUBLE_NEWLINE + toSend;
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
139 //print("response: " + uneval(response));
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
140 conn.send(response);
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
141 conn.close();
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
142 //print("response sent.");
52
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
143 } catch (e) {
73
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
144 handleError();
52
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
145 try { conn.close(); } catch (e) {}
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
146 }
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
147 if (path == "/stop")
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
148 return false;
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
149 return true;
50
853f80bd3b4b Added tentative profileMemory() server, which suspends the current JS runtime, creates a new one and runs a web server in it.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
150 }
52
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
151
73
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
152 var keepGoing = true;
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
153
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
154 while (keepGoing) {
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
155 try {
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
156 keepGoing = processRequest(socket);
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
157 } catch (e) {
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
158 handleError();
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
159 }
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
160 }
b87b6ebb6e86 Memory profiler server is now much better at reporting errors.
Atul Varma <varmaa@toolness.com>
parents: 67
diff changeset
161
52
a10cb805b5ab Added RESTful methods for memory tracking.
Atul Varma <varmaa@toolness.com>
parents: 51
diff changeset
162 socket.close();