trace() #1[r2,l1] Object { #2[r1,l2] Name String [1 blocks] "˙" #3[r1,l2] Object { #6[r1,l2] Name String [1 blocks] "net" #15[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) [ ] #17[r1,l2] Name String [2 blocks] "history" #21[r1,l1] Array(59) [ #98[r1,l2] Name Integer 45 #327[r1,l1] String [84 blocks] "MQTT.prototype.mqttConnect = function(clean) {\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};" #135[r1,l2] Name Integer 46 #127[r1,l1] String [5 blocks] "/** PUBLISH control packet */" #104[r1,l2] Name Integer 47 #143[r1,l1] String [44 blocks] "MQTT.prototype.mqttPublish = function(topic, message, qos) {\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};" #108[r1,l2] Name Integer 48 #109[r1,l1] String [5 blocks] "/** SUBSCRIBE control packet */" #67[r1,l2] Name Integer 49 #940[r1,l1] String [38 blocks] "MQTT.prototype.mqttSubscribe = function(topic, qos) {\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};" #65[r1,l2] Name Integer 50 #64[r1,l1] String [5 blocks] "/** UNSUBSCRIBE control packet */" #634[r1,l2] Name Integer 51 #436[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};" #506[r1,l2] Name Integer 52 #487[r1,l1] String [7 blocks] "/* Exports *************************************/" #581[r1,l2] Name Integer 53 #485[r1,l1] String [13 blocks] "/** This is 'exported' so it can be used with `require('MQTT.js').create(server, options)` */" #582[r1,l2] Name Integer 54 #505[r1,l1] String [11 blocks] "exports.create = function (server, options) {\n return new MQTT(server, options);\n};" #583[r1,l2] Name Integer 55 #584[r1,l1] String [2 blocks] "echo(1);" #663[r1,l2] Name Integer 57 #715[r1,l1] String [2 blocks] "trace()" #623[r1,l2] Name Integer 58 #8[r1,l1] String [3 blocks] "process.memory()" ] #165[r1,l2] Name String [2 blocks] "modules" #164[r1,l1] Object { } } #29[r1,l2] Name String [2 blocks] "console" #30[r1,l1] NativeFunction 0x40222cc0 (1) { } #25[r1,l2] Name String [1 blocks] "JSON" #24[r1,l1] NativeFunction 0x40222cb0 (1) { } #45[r1,l2] Name String [2 blocks] "process" #44[r1,l1] NativeFunction 0x40222c60 (1) { } #47[r1,l2] Name String [2 blocks] "Modules" #170[r1,l1] NativeFunction 0x40222ca0 (1) { } #160[r1,l2] Name String [2 blocks] "exports" #156[r1,l1] Object { #504[r1,l2] Name String [2 blocks] "create" #429[r1,l1] Function { #569[r1,l2] Name Param "server" undefined #465[r1,l2] Name Param "options" undefined #462[r1,l2] Name String [1 blocks] "˙cod" #617[r1,l1] FlatString [4 blocks] "return new MQTT(server, options);" } } #120[r1,l2] Name String [1 blocks] "C" #121[r1,l1] Object { #119[r1,l2] Name String [2 blocks] "PACKET_ID"= int 1 #124[r1,l2] Name String [3 blocks] "PROTOCOL_LEVEL"= int 4 } #174[r1,l2] Name String [1 blocks] "TYPE" #69[r1,l1] Object { #70[r1,l2] Name String [2 blocks] "CONNECT"= int 1 #72[r1,l2] Name String [2 blocks] "CONNACK"= int 2 #74[r1,l2] Name String [2 blocks] "PUBLISH"= int 3 #75[r1,l2] Name String [2 blocks] "PUBACK"= int 4 #76[r1,l2] Name String [2 blocks] "PUBREC"= int 5 #78[r1,l2] Name String [2 blocks] "PUBREL"= int 6 #82[r1,l2] Name String [2 blocks] "PUBCOMP"= int 7 #83[r1,l2] Name String [2 blocks] "SUBSCRIBE"= int 8 #86[r1,l2] Name String [2 blocks] "SUBACK"= int 9 #88[r1,l2] Name String [2 blocks] "UNSUBSCRIBE"= int 10 #90[r1,l2] Name String [2 blocks] "UNSUBACK"= int 11 #92[r1,l2] Name String [2 blocks] "PINGREQ"= int 12 #94[r1,l2] Name String [2 blocks] "PINGRESP"= int 13 #96[r1,l2] Name String [2 blocks] "DISCONNECT"= int 14 } #52[r1,l2] Name String [1 blocks] "MQTT" #55[r2,l1] Function { #54[r1,l2] Name Param "server" undefined #56[r1,l2] Name Param "options" undefined #58[r1,l2] Name String [1 blocks] "˙cod" #212[r1,l1] FlatString [56 blocks] "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 );" #381[r1,l2] Name String [2 blocks] "prototype" #384[r1,l1] Object { #383[r1,l2] Name String [2 blocks] "constructor" #55[r2,l2] ... #379[r1,l2] Name String [1 blocks] "C" #378[r1,l1] Object { #377[r1,l2] Name String [2 blocks] "DEF_QOS"= int 0 #375[r1,l2] Name String [2 blocks] "DEF_PORT" #373[r1,l1] Integer 1883 #372[r1,l2] Name String [3 blocks] "DEF_KEEP_ALIVE"= int 60 #369[r1,l2] Name String [3 blocks] "CONNECT_TIMEOUT" #366[r1,l1] Integer 5000 #284[r1,l2] Name String [3 blocks] "PING_INTERVAL"= int 40 } #435[r1,l2] Name String [2 blocks] "mqttStr" #433[r1,l1] Function { #432[r1,l2] Name Param "s" undefined #273[r1,l2] Name String [1 blocks] "˙cod" #449[r1,l1] FlatString [6 blocks] "return String.fromCharCode(s.length>>8, s.length&255)+s;" } #474[r1,l2] Name String [2 blocks] "mqttPacket" #472[r1,l1] Function { #471[r1,l2] Name Param "cmd" undefined #470[r1,l2] Name Param "variable" undefined #468[r1,l2] Name Param "payload" undefined #275[r1,l2] Name String [1 blocks] "˙cod" #495[r1,l1] FlatString [8 blocks] "return String.fromCharCode(cmd, variable.length+payload.length)+variable+payload;" } #568[r1,l2] Name String [2 blocks] "parsePublish" #566[r1,l1] Function { #565[r1,l2] Name Param "data" undefined #428[r1,l2] Name String [1 blocks] "˙cod" #511[r1,l1] FlatString [41 blocks] "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 }" } #650[r1,l2] Name String [2 blocks] "mqttUid" #560[r1,l1] Function { #645[r1,l2] Name String [1 blocks] "˙cod" #561[r1,l1] FlatString [4 blocks] "return s4() + s4() + s4();" #646[r1,l2] Name String [1 blocks] "˙sco" #461[r2,l1] Function { #554[r1,l2] Name String [2 blocks] "return" undefined #556[r1,l2] Name String [1 blocks] "s4" #557[r1,l1] Function { #558[r1,l2] Name String [1 blocks] "˙cod" #635[r1,l1] FlatString [10 blocks] "return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);" #559[r1,l2] Name String [1 blocks] "˙sco" #461[r2,l2] ... } } } #700[r1,l2] Name String [3 blocks] "createEscapedHex" #647[r1,l1] Function { #697[r1,l2] Name Param "number" undefined #460[r1,l2] Name String [1 blocks] "˙cod" #717[r1,l1] FlatString [7 blocks] "return String.fromCharCode(parseInt( number.toString(16) , 16));" } #977[r1,l2] Name String [2 blocks] "connect" #975[r1,l1] Function { #974[r1,l2] Name Param "client" undefined #48[r1,l2] Name String [1 blocks] "˙cod" #740[r1,l1] FlatString [160 blocks] "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);" } #917[r1,l2] Name String [2 blocks] "disconnect" #915[r1,l1] Function { #914[r1,l2] Name Param "topic" undefined #912[r1,l2] Name Param "message" undefined #50[r1,l2] Name String [1 blocks] "˙cod" #943[r1,l1] FlatString [13 blocks] "this.client.write(String.fromCharCode(TYPE.DISCONNECT<<4)+\"\\x00\");\n this.client.end();\n this.client = false;\n this.connected = false;" } #966[r1,l2] Name String [2 blocks] "publish" #964[r1,l1] Function { #963[r1,l2] Name Param "topic" undefined #961[r1,l2] Name Param "message" undefined #959[r1,l2] Name Param "qos" undefined #278[r1,l2] Name String [1 blocks] "˙cod" #386[r1,l1] FlatString [9 blocks] "var _qos = qos || this.C.DEF_QOS;\n this.client.write(this.mqttPublish(topic, message, _qos));" } #907[r1,l2] Name String [2 blocks] "subscribe" #693[r1,l1] Function { #692[r1,l2] Name Param "topic" undefined #414[r1,l2] Name Param "qos" undefined #396[r1,l2] Name String [1 blocks] "˙cod" #405[r1,l1] FlatString [9 blocks] "var _qos = qos || this.C.DEF_QOS;\n this.client.write(this.mqttSubscribe(topic, _qos));" } #430[r1,l2] Name String [2 blocks] "unsubscribe" #438[r1,l1] Function { #439[r1,l2] Name Param "topic" undefined #398[r1,l2] Name String [1 blocks] "˙cod" #476[r1,l1] FlatString [5 blocks] "this.client.write(this.mqttUnsubscribe(topic));" } #508[r1,l2] Name String [1 blocks] "ping" #509[r1,l1] Function { #424[r1,l2] Name String [1 blocks] "˙cod" #570[r1,l1] FlatString [7 blocks] "this.client.write(String.fromCharCode(TYPE.PINGREQ<<4)+\"\\x00\");" } #615[r1,l2] Name String [4 blocks] "createFlagsForConnection" #611[r1,l1] Function { #610[r1,l2] Name Param "options" undefined #466[r1,l2] Name String [1 blocks] "˙cod" #585[r1,l1] FlatString [18 blocks] "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 );" } #326[r1,l2] Name String [2 blocks] "mqttConnect" #324[r1,l1] Function { #323[r1,l2] Name Param "clean" undefined #662[r1,l2] Name String [1 blocks] "˙cod" #321[r1,l1] String [77 blocks] "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);" } #142[r1,l2] Name String [2 blocks] "mqttPublish" #146[r1,l1] Function { #147[r1,l2] Name Param "topic" undefined #148[r1,l2] Name Param "message" undefined #151[r1,l2] Name Param "qos" undefined #102[r1,l2] Name String [1 blocks] "˙cod" #979[r1,l1] FlatString [25 blocks] "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);" } #941[r1,l2] Name String [3 blocks] "mqttSubscribe" #51[r1,l1] Function { #286[r1,l2] Name Param "topic" undefined #683[r1,l2] Name Param "qos" undefined #279[r1,l2] Name String [1 blocks] "˙cod" #691[r1,l1] String [30 blocks] "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*/);" } #274[r1,l2] Name String [3 blocks] "mqttUnsubscribe" #956[r1,l1] Function { #957[r1,l2] Name Param "topic" undefined #633[r1,l2] Name String [1 blocks] "˙cod" #272[r1,l1] String [25 blocks] "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));" } } } } =undefined >process.memory() ={ "free": 278, "usage": 745, "total": 1023, "history": 265 } >