base.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. const logger = require('@alias/logger')('growi:service:s2s-messaging:base');
  2. const S2sMessageHandlable = require('./handlable');
  3. class S2sMessagingServiceDelegator {
  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. this.handlableList = [];
  11. }
  12. shouldResubscribe() {
  13. throw new Error('implement this');
  14. }
  15. subscribe(forceReconnect) {
  16. throw new Error('implement this');
  17. }
  18. /**
  19. * Publish message
  20. * @param {S2sMessage} s2sMessage
  21. */
  22. async publish(s2sMessage) {
  23. s2sMessage.setPublisherUid(this.uid);
  24. }
  25. /**
  26. * Add message handler
  27. * @param {S2sMessageHandlable} handlable
  28. */
  29. addMessageHandler(handlable) {
  30. if (!(handlable instanceof S2sMessageHandlable)) {
  31. logger.warn('Unsupported instance');
  32. logger.debug('Unsupported instance: ', handlable);
  33. return;
  34. }
  35. this.handlableList.push(handlable);
  36. }
  37. /**
  38. * Remove message handler
  39. * @param {S2sMessageHandlable} handlable
  40. */
  41. removeMessageHandler(handlable) {
  42. if (!(handlable instanceof S2sMessageHandlable)) {
  43. logger.warn('Unsupported instance');
  44. logger.debug('Unsupported instance: ', handlable);
  45. return;
  46. }
  47. this.handlableList = this.handlableList.filter(h => h !== handlable);
  48. }
  49. }
  50. module.exports = S2sMessagingServiceDelegator;