UNPKG

2.42 kBJavaScriptView Raw
1module.exports = function()
2{
3 var provider = null;
4
5 var r = {};
6
7 r.start = function(callback) {
8
9 var self = this;
10
11 // set up defaults
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}();