base.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. const logger = require('@alias/logger')('growi:service:config-pubsub:base');
  2. const ConfigPubsubMessageHandlable = require('../config-pubsub/handlable');
  3. class ConfigPubsubDelegator {
  4. constructor(uri) {
  5. this.uid = Math.floor(Math.random() * 100000);
  6. this.uri = uri;
  7. if (uri == null) {
  8. throw new Error('uri must be set');
  9. }
  10. }
  11. shouldResubscribe() {
  12. throw new Error('implement this');
  13. }
  14. subscribe(forceReconnect) {
  15. throw new Error('implement this');
  16. }
  17. /**
  18. * Publish message
  19. * @param {ConfigPubsubMessage} configPubsubMessage
  20. */
  21. async publish(configPubsubMessage) {
  22. configPubsubMessage.setPublisherUid(this.uid);
  23. }
  24. /**
  25. * Add message handler
  26. * @param {ConfigPubsubMessageHandlable} handlable
  27. */
  28. addMessageHandler(handlable) {
  29. if (!(handlable instanceof ConfigPubsubMessageHandlable)) {
  30. logger.warn('Unsupported instance');
  31. logger.debug('Unsupported instance: ', handlable);
  32. return;
  33. }
  34. this.handlableList.push(handlable);
  35. }
  36. /**
  37. * Remove message handler
  38. * @param {ConfigPubsubMessageHandlable} handlable
  39. */
  40. removeMessageHandler(handlable) {
  41. if (!(handlable instanceof ConfigPubsubMessageHandlable)) {
  42. logger.warn('Unsupported instance');
  43. logger.debug('Unsupported instance: ', handlable);
  44. return;
  45. }
  46. this.handlableList = this.handlableList.filter(h => h !== handlable);
  47. }
  48. }
  49. module.exports = ConfigPubsubDelegator;