Guest User

Untitled

a guest
Jul 21st, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. const KafkaConnector = require('./kafka')
  2. const RedisConnector = require('./redis')
  3. const SocketConnector = require('./socket')
  4. const RoutesConnector = require('./routes')
  5.  
  6. class ConnectorManager {
  7. constructor () {
  8. this.init()
  9. }
  10.  
  11. init () {
  12. this.kafka = new KafkaConnector()
  13. this.redis = new RedisConnector()
  14. this.socket = new SocketConnector()
  15. this.routes = new RoutesConnector()
  16. }
  17.  
  18. /**
  19. * wrapper for centralized event registration on particular connector
  20. * @param {*} connector
  21. * @param {*} evt
  22. * @param {*} cb
  23. */
  24. listen (connector, evt, cb) {
  25. let listenerCount
  26. if (connector && evt && cb) {
  27. if (this[connector]) {
  28. listenerCount = this[connector].listenerCount(evt)
  29. if (listenerCount < this[connector].getMaxListeners()) {
  30. this[connector].on(evt, cb)
  31. } else {
  32. throw new this.MaxListenerExceededException(connector, evt)
  33. }
  34. } else {
  35. throw new this.InvalidConnectorException(connector)
  36. }
  37. } else {
  38. throw new this.InvalidArgumentsException(connector)
  39. }
  40. }
  41.  
  42. /**
  43. * wrapper for centralized event trigger on particular connector
  44. * @param {*} connector
  45. * @param {*} evt
  46. * @param {*} data
  47. */
  48. trigger (connector, evt, data) {
  49. if (connector && evt) {
  50. if (this[connector]) {
  51. console.log(
  52. `Emitting on ${connector} connector, ${evt} event, with data ${data}`
  53. )
  54. this[connector].emit(evt, data)
  55. } else {
  56. throw new this.InvalidConnectorException(connector)
  57. }
  58. } else {
  59. throw new this.InvalidArgumentsException(connector)
  60. }
  61. }
  62.  
  63. MaxListenerExceededException (connector, event) {
  64. this.connector = connector
  65. this.event = event
  66. this.error = `Maximum listener count exceeded on ${connector} connector for event ${event}`
  67. }
  68.  
  69. InvalidConnectorException (connector) {
  70. this.connector = connector
  71. this.error = 'Invalid Connector'
  72. }
  73.  
  74. InvalidArgumentsException () {
  75. this.error = 'Invalid Arguments'
  76. }
  77. }
  78. module.exports = new ConnectorManager()
Add Comment
Please, Sign In to add comment