protocol.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* Protocol - protocol constants */
  2. /* Command code => mnemonic */
  3. module.exports.types = {
  4. 0: 'reserved',
  5. 1: 'connect',
  6. 2: 'connack',
  7. 3: 'publish',
  8. 4: 'puback',
  9. 5: 'pubrec',
  10. 6: 'pubrel',
  11. 7: 'pubcomp',
  12. 8: 'subscribe',
  13. 9: 'suback',
  14. 10: 'unsubscribe',
  15. 11: 'unsuback',
  16. 12: 'pingreq',
  17. 13: 'pingresp',
  18. 14: 'disconnect',
  19. 15: 'reserved'
  20. };
  21. /* Mnemonic => Command code */
  22. module.exports.codes = {};
  23. for(var k in module.exports.types) {
  24. var v = module.exports.types[k];
  25. module.exports.codes[v] = k;
  26. }
  27. /* Header */
  28. module.exports.CMD_SHIFT = 4;
  29. module.exports.CMD_MASK = 0xF0;
  30. module.exports.DUP_MASK = 0x08;
  31. module.exports.QOS_MASK = 0x03;
  32. module.exports.QOS_SHIFT = 1;
  33. module.exports.RETAIN_MASK = 0x01;
  34. /* Length */
  35. module.exports.LENGTH_MASK = 0x7F;
  36. module.exports.LENGTH_FIN_MASK = 0x80;
  37. /* Connect */
  38. module.exports.USERNAME_MASK = 0x80;
  39. module.exports.PASSWORD_MASK = 0x40;
  40. module.exports.WILL_RETAIN_MASK = 0x20;
  41. module.exports.WILL_QOS_MASK = 0x18;
  42. module.exports.WILL_QOS_SHIFT = 3;
  43. module.exports.WILL_FLAG_MASK = 0x04;
  44. module.exports.CLEAN_SESSION_MASK = 0x02;