1 | module.exports = function()
|
2 | {
|
3 | var provider = null;
|
4 |
|
5 | var r = {};
|
6 |
|
7 | r.start = function(callback) {
|
8 |
|
9 | var self = this;
|
10 |
|
11 |
|
12 | if (!process.env.CLOUDCMS_BROADCAST_TYPE) {
|
13 | process.env.CLOUDCMS_BROADCAST_TYPE = "local";
|
14 |
|
15 | if (process.configuration.setup !== "single") {
|
16 | process.env.CLOUDCMS_BROADCAST_TYPE = "redis";
|
17 | }
|
18 | }
|
19 |
|
20 | var config = process.configuration;
|
21 | if (!config["broadcast"] || !config["broadcast"].type)
|
22 | {
|
23 | if (process.env.CLOUDCMS_BROADCAST_TYPE) {
|
24 | config["broadcast"] = {
|
25 | "enabled": true,
|
26 | "type": process.env.CLOUDCMS_BROADCAST_TYPE,
|
27 | "configuration": {}
|
28 | };
|
29 | }
|
30 | }
|
31 | if (config["broadcast"])
|
32 | {
|
33 | var broadcast = config["broadcast"];
|
34 |
|
35 | if (broadcast.enabled)
|
36 | {
|
37 | var type = broadcast.type;
|
38 | var configuration = broadcast.configuration;
|
39 | if (!configuration) {
|
40 | configuration = broadcast.config;
|
41 | }
|
42 |
|
43 | process.env.CLOUDCMS_BROADCAST_TYPE = type;
|
44 |
|
45 | provider = require("./providers/" + type)(configuration);
|
46 | provider.start(function (err) {
|
47 | return callback(err);
|
48 | });
|
49 | }
|
50 | else
|
51 | {
|
52 | callback();
|
53 | }
|
54 | }
|
55 | else
|
56 | {
|
57 | callback();
|
58 | }
|
59 | };
|
60 |
|
61 | r.publish = function(topic, message, callback)
|
62 | {
|
63 | if (!provider) {
|
64 | return;
|
65 | }
|
66 |
|
67 | provider.publish(topic, message, function(err) {
|
68 |
|
69 | if (callback)
|
70 | {
|
71 | callback(err);
|
72 | }
|
73 |
|
74 | });
|
75 | };
|
76 |
|
77 | r.subscribe = function(topic, fn, callback)
|
78 | {
|
79 | if (!provider) {
|
80 | return;
|
81 | }
|
82 |
|
83 | provider.subscribe(topic, fn, function(err) {
|
84 |
|
85 | if (callback)
|
86 | {
|
87 | callback(err);
|
88 | }
|
89 |
|
90 | });
|
91 | };
|
92 |
|
93 | r.unsubscribe = function(topic, fn, callback)
|
94 | {
|
95 | if (!provider) {
|
96 | return;
|
97 | }
|
98 |
|
99 | provider.unsubscribe(topic, fn, function(err) {
|
100 |
|
101 | if (callback)
|
102 | {
|
103 | callback();
|
104 | }
|
105 | });
|
106 | };
|
107 |
|
108 | return r;
|
109 | }();
|