>echo(0); =undefined >trace() #1[r2,l1] Object { #2[r1,l2] Name String [1 blocks] "˙" #3[r1,l2] Object { #6[r1,l2] Name String [1 blocks] "net" #4[r1,l2] String [2 blocks] "\x04\x00\x00\x00\x00˙˙˙" #9[r1,l2] Name String [2 blocks] "timers" #11[r2,l1] Array(0) [ ] #12[r1,l2] Name String [2 blocks] "watches" #14[r2,l1] Array(0) [ ] #15[r1,l2] Name String [2 blocks] "history" #19[r1,l1] Array(52) [ #485[r1,l2] Name Integer 46 #484[r1,l1] String [5 blocks] "/** UNSUBSCRIBE control packet */" #414[r1,l2] Name Integer 47 #48[r1,l1] String [32 blocks] "MQTT.prototype.mqttUnsubscribe = function(topic) {\n var cmd = TYPE.UNSUBSCRIBE << 4 | 2;\n var pid = String.fromCharCode(C.PACKET_ID<<8, C.PACKET_ID&255);\n return this.mqttPacket(cmd,\n pid/*Packet id*/,\n this.mqttStr(topic));\n};" #391[r1,l2] Name Integer 48 #392[r1,l1] String [7 blocks] "/* Exports *************************************/" #767[r1,l2] Name Integer 49 #766[r1,l1] String [13 blocks] "/** This is 'exported' so it can be used with `require('MQTT.js').create(server, options)` */" #497[r1,l2] Name Integer 50 #361[r1,l1] String [11 blocks] "exports.create = function (server, options) {\n return new MQTT(server, options);\n};" #498[r1,l2] Name Integer 51 #499[r1,l1] String [2 blocks] "echo(1);" ] #32[r1,l2] Name String [2 blocks] "modules" #34[r1,l1] Object { } } #22[r1,l2] Name String [2 blocks] "Modules" #23[r1,l1] NativeFunction 0x40222d98 (1) { } #38[r1,l2] Name String [2 blocks] "exports" #42[r1,l1] Object { #360[r1,l2] Name String [2 blocks] "create" #409[r1,l1] Function { #415[r1,l2] Name Param "server" undefined #400[r1,l2] Name Param "options" undefined #496[r1,l2] Name String [1 blocks] "˙cod" #350[r1,l1] String [6 blocks] "{\n return new MQTT(server, options);\n}" } } #79[r1,l2] Name String [1 blocks] "C" #78[r1,l1] Object { #77[r1,l2] Name String [2 blocks] "PACKET_ID"= int 1 #75[r1,l2] Name String [3 blocks] "PROTOCOL_LEVEL"= int 4 } #130[r1,l2] Name String [1 blocks] "TYPE" #129[r1,l1] Object { #128[r1,l2] Name String [2 blocks] "CONNECT"= int 1 #126[r1,l2] Name String [2 blocks] "CONNACK"= int 2 #124[r1,l2] Name String [2 blocks] "PUBLISH"= int 3 #122[r1,l2] Name String [2 blocks] "PUBACK"= int 4 #120[r1,l2] Name String [2 blocks] "PUBREC"= int 5 #118[r1,l2] Name String [2 blocks] "PUBREL"= int 6 #116[r1,l2] Name String [2 blocks] "PUBCOMP"= int 7 #114[r1,l2] Name String [2 blocks] "SUBSCRIBE"= int 8 #112[r1,l2] Name String [2 blocks] "SUBACK"= int 9 #110[r1,l2] Name String [2 blocks] "UNSUBSCRIBE"= int 10 #108[r1,l2] Name String [2 blocks] "UNSUBACK"= int 11 #106[r1,l2] Name String [2 blocks] "PINGREQ"= int 12 #104[r1,l2] Name String [2 blocks] "PINGRESP"= int 13 #102[r1,l2] Name String [2 blocks] "DISCONNECT"= int 14 } #254[r1,l2] Name String [1 blocks] "MQTT" #253[r2,l1] Function { #252[r1,l2] Name Param "server" undefined #250[r1,l2] Name Param "options" undefined #346[r1,l2] Name String [1 blocks] "˙cod" #248[r1,l1] String [84 blocks] "{\n this.server = server;\n var options = options || {};\n this.port = options.port || this.C.DEF_PORT;\n this.client_id = options.client_id || this.mqttUid();\n this.keep_alive = options.keep_alive || this.C.DEF_KEEP_ALIVE;\n this.clean_session = options.clean_session || true;\n this.username = options.username;\n this.password = options.password;\n this.client = false;\n this.connected = false;\n this.ping_interval =\n this.keep_alive < this.C.PING_INTERVAL ? (this.keep_alive - 5) : this.C.PING_INTERVAL;\n this.protocol_name = options.protocol_name || \"MQTT\";\n this.protocol_level = this.createEscapedHex( options.protocol_level || C.PROTOCOL_LEVEL );\n}" #386[r1,l2] Name String [2 blocks] "prototype" #389[r1,l1] Object { #388[r1,l2] Name String [2 blocks] "constructor" #253[r2,l2] ... #384[r1,l2] Name String [1 blocks] "C" #383[r1,l1] Object { #382[r1,l2] Name String [2 blocks] "DEF_QOS"= int 0 #380[r1,l2] Name String [2 blocks] "DEF_PORT" #378[r1,l1] Integer 1883 #377[r1,l2] Name String [3 blocks] "DEF_KEEP_ALIVE"= int 60 #374[r1,l2] Name String [3 blocks] "CONNECT_TIMEOUT" #371[r1,l1] Integer 5000 #370[r1,l2] Name String [3 blocks] "PING_INTERVAL"= int 40 } #440[r1,l2] Name String [2 blocks] "mqttStr" #438[r1,l1] Function { #437[r1,l2] Name Param "s" undefined #455[r1,l2] Name String [1 blocks] "˙cod" #436[r1,l1] String [9 blocks] "{\n return String.fromCharCode(s.length>>8, s.length&255)+s;\n}" } #482[r1,l2] Name String [2 blocks] "mqttPacket" #480[r1,l1] Function { #479[r1,l2] Name Param "cmd" undefined #478[r1,l2] Name Param "variable" undefined #476[r1,l2] Name Param "payload" undefined #504[r1,l2] Name String [1 blocks] "˙cod" #474[r1,l1] String [12 blocks] "{\n return String.fromCharCode(cmd, variable.length+payload.length)+variable+payload;\n}" } #580[r1,l2] Name String [2 blocks] "parsePublish" #578[r1,l1] Function { #577[r1,l2] Name Param "data" undefined #647[r1,l2] Name String [1 blocks] "˙cod" #576[r1,l1] String [61 blocks] "{\n if (data.length > 5 && typeof data !== undefined) {\n var cmd = data.charCodeAt(0);\n var rem_len = data.charCodeAt(1);\n var var_len = data.charCodeAt(2) << 8 | data.charCodeAt(3);\n return { topic: data.substr(4, var_len),\n message: data.substr(4+var_len, rem_len-var_len),\n dup: (cmd & 0b00001000) >> 3,\n qos: (cmd & 0b00000110) >> 1,\n retain: cmd & 0b00000001\n };\n }\n else {\n return undefined;\n }\n}" } #682[r1,l2] Name String [2 blocks] "mqttUid" #736[r1,l1] Function { #742[r1,l2] Name String [1 blocks] "˙cod" #737[r1,l1] String [5 blocks] "{\n return s4() + s4() + s4();\n }" #743[r1,l2] Name String [1 blocks] "˙sco" #713[r2,l1] Function { #714[r1,l2] Name String [2 blocks] "return" undefined #716[r1,l2] Name String [1 blocks] "s4" #717[r1,l1] Function { #734[r1,l2] Name String [1 blocks] "˙cod" #718[r1,l1] String [16 blocks] "{\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }" #735[r1,l2] Name String [1 blocks] "˙sco" #713[r2,l2] ... } } } #674[r1,l2] Name String [3 blocks] "createEscapedHex" #671[r1,l1] Function { #670[r1,l2] Name Param "number" undefined #757[r1,l2] Name String [1 blocks] "˙cod" #668[r1,l1] String [10 blocks] "{\n return String.fromCharCode(parseInt( number.toString(16) , 16));\n}" } #1019[r1,l2] Name String [2 blocks] "connect" #1017[r1,l1] Function { #1016[r1,l2] Name Param "client" undefined #349[r1,l2] Name String [1 blocks] "˙cod" #1014[r1,l1] String [239 blocks] "{\n var mqo = this;\n var onConnect = function() {\n console.log('Client connected');\n client.write(mqo.mqttConnect(mqo.client_id));\n\n // Disconnect if no CONNACK is received\n mqo.ctimo = setTimeout(function() {\n mqo.disconnect();\n }, mqo.C.CONNECT_TIMEOUT);\n\n // Set up regular keep_alive ping\n mqo.pintr = setInterval(function() {\n // console.log(\"Pinging MQTT server\");\n mqo.ping();\n }, mqo.ping_interval*1000);\n\n // Incoming data\n client.on('data', function(data) {\n var type = data.charCodeAt(0) >> 4;\n\n if(type === TYPE.PUBLISH) {\n mqo.emit('publish', mqo.parsePublish(data));\n }\n else if(type === TYPE.PUBACK) {\n // implement puback\n }\n else if(type === TYPE.SUBACK) {\n // implement suback\n }\n else if(type === TYPE.UNSUBACK) {\n // implement unsuback\n }\n else if(type === TYPE.PINGREQ) {\n // silently reply to pings\n client.write(TYPE.PINGRESP+\"\\x00\"); // reply to PINGREQ\n }\n else if(type === TYPE.PINGRESP) {\n mqo.emit('ping_reply');\n }\n else if(type === TYPE.CONNACK) {\n clearTimeout(mqo.ctimo);\n if(data.charCodeAt(3) === 0) {\n mqo.connected = true;\n console.log(\"MQTT connection accepted\");\n mqo.emit('connected');\n }\n else {\n console.log(\"MQTT connection error\");\n }\n }\n else {\n console.log(\"MQTT unsupported packet type: \"+type);\n console.log(\"[MQTT]\"+data.split(\"\").map(function(c) { return c.charCodeAt(0); }));\n }\n });\n\n client.on('end', function() {\n console.log('MQTT client disconnected');\n clearInterval(mqo.pintr);\n mqo.emit('disconnected');\n });\n\n mqo.client = client;\n };\n if (client) onConnect();\n else client = require(\"net\").connect({host : mqo.server, port: mqo.port}, onConnect);\n}" } #464[r1,l2] Name String [2 blocks] "disconnect" #466[r1,l1] Function { #467[r1,l2] Name Param "topic" undefined #461[r1,l2] Name Param "message" undefined #519[r1,l2] Name String [1 blocks] "˙cod" #443[r1,l1] String [19 blocks] "{\n this.client.write(String.fromCharCode(TYPE.DISCONNECT<<4)+\"\\x00\");\n this.client.end();\n this.client = false;\n this.connected = false;\n}" } #626[r1,l2] Name String [2 blocks] "publish" #628[r1,l1] Function { #629[r1,l2] Name Param "topic" undefined #631[r1,l2] Name Param "message" undefined #633[r1,l2] Name Param "qos" undefined #603[r1,l2] Name String [1 blocks] "˙cod" #634[r1,l1] String [13 blocks] "{\n var _qos = qos || this.C.DEF_QOS;\n this.client.write(this.mqttPublish(topic, message, _qos));\n}" } #654[r1,l2] Name String [2 blocks] "subscribe" #652[r1,l1] Function { #651[r1,l2] Name Param "topic" undefined #583[r1,l2] Name Param "qos" undefined #695[r1,l2] Name String [1 blocks] "˙cod" #584[r1,l1] String [13 blocks] "{\n var _qos = qos || this.C.DEF_QOS;\n this.client.write(this.mqttSubscribe(topic, _qos));\n}" } #758[r1,l2] Name String [2 blocks] "unsubscribe" #660[r1,l1] Function { #661[r1,l2] Name Param "topic" undefined #677[r1,l2] Name String [1 blocks] "˙cod" #663[r1,l1] String [8 blocks] "{\n this.client.write(this.mqttUnsubscribe(topic));\n}" } #1020[r1,l2] Name String [1 blocks] "ping" #348[r1,l1] Function { #771[r1,l2] Name String [1 blocks] "˙cod" #775[r1,l1] String [10 blocks] "{\n this.client.write(String.fromCharCode(TYPE.PINGREQ<<4)+\"\\x00\");\n}" } #271[r1,l2] Name String [4 blocks] "createFlagsForConnection" #267[r1,l1] Function { #266[r1,l2] Name Param "options" undefined #306[r1,l2] Name String [1 blocks] "˙cod" #264[r1,l1] String [27 blocks] "{\n var flags = 0;\n flags |= ( this.username )? 0x80 : 0;\n flags |= ( this.username && this.password )? 0x40 : 0;\n flags |= ( options.clean_session )? 0x02 : 0;\n return this.createEscapedHex( flags );\n}" } #68[r1,l2] Name String [2 blocks] "mqttConnect" #66[r1,l1] Function { #72[r1,l2] Name Param "clean" undefined #609[r1,l2] Name String [1 blocks] "˙cod" #93[r1,l1] String [78 blocks] "{\n var cmd = TYPE.CONNECT << 4;\n var flags = this.createFlagsForConnection({\n clean_session: clean\n });\n\n var keep_alive = String.fromCharCode(this.keep_alive>>8, this.keep_alive&255);\n\n /* payload */\n var payload = this.mqttStr(this.client_id);\n if( this.username ){\n payload += this.mqttStr( this.username );\n if( this.password ){\n payload += this.mqttStr( this.password );\n }\n }\n\n return this.mqttPacket(cmd,\n this.mqttStr( this.protocol_name )/*protocol name*/+\n this.protocol_level /*protocol level*/+\n flags+\n keep_alive,\n payload);\n}" } #744[r1,l2] Name String [2 blocks] "mqttPublish" #676[r1,l1] Function { #688[r1,l2] Name Param "topic" undefined #686[r1,l2] Name Param "message" undefined #689[r1,l2] Name Param "qos" undefined #307[r1,l2] Name String [1 blocks] "˙cod" #690[r1,l1] String [37 blocks] "{\n var cmd = TYPE.PUBLISH << 4 | (qos << 1);\n var pid = String.fromCharCode(C.PACKET_ID<<8, C.PACKET_ID&255);\n // Packet id must be included for QOS > 0\n var variable = (qos === 0) ? this.mqttStr(topic) : this.mqttStr(topic)+pid;\n return this.mqttPacket(cmd, variable, message);\n}" } #339[r1,l2] Name String [3 blocks] "mqttSubscribe" #342[r1,l1] Function { #255[r1,l2] Name Param "topic" undefined #71[r1,l2] Name Param "qos" undefined #490[r1,l2] Name String [1 blocks] "˙cod" #70[r1,l1] String [31 blocks] "{\n var cmd = TYPE.SUBSCRIBE << 4 | 2;\n var pid = String.fromCharCode(C.PACKET_ID<<8, C.PACKET_ID&255);\n return this.mqttPacket(cmd,\n pid/*Packet id*/,\n this.mqttStr(topic)+\n String.fromCharCode(qos)/*QOS*/);\n}" } #49[r1,l2] Name String [3 blocks] "mqttUnsubscribe" #52[r1,l1] Function { #53[r1,l2] Name Param "topic" undefined #413[r1,l2] Name String [1 blocks] "˙cod" #55[r1,l1] String [26 blocks] "{\n var cmd = TYPE.UNSUBSCRIBE << 4 | 2;\n var pid = String.fromCharCode(C.PACKET_ID<<8, C.PACKET_ID&255);\n return this.mqttPacket(cmd,\n pid/*Packet id*/,\n this.mqttStr(topic));\n}" } } } } =undefined >process.memory() ={ "free": 95, "usage": 928, "total": 1023, "history": 80 } >