File size: 1,212 Bytes
5fae594
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
'use strict';

// delayed dependencies
var Room, allSockets;


/*
 * bind
 *
 * - self (object) : the sender
 * - obj (object) : what to add the methods to
 * - [name] (string) : optional name for methods
 */

var bind = function bind (self) {
  var obj = broadcast(self);
  obj.to = broadcastTo(self);
  return obj;
};

var detach = function (self, obj, name) {
};

/*
 * Broadcast
 *
 * - event (string)
 * - args... (mixed)
 */

var broadcast = function broadcast (self) {
  return function broadcastClosure (event, arg1, arg2, arg3) {
    allSockets.broadcast(self.id, event, arg1, arg2, arg3);
  };
};


/*
 * Broadcast.to
 *
 * - room (string)
 */

var broadcastTo = function broadcastTo (self) {
  return function broadcastToClosure (room) {
    room = Room.get(room);
    return {
      emit: function broadcastToEmit (event, arg1, arg2, arg3) {
        room.broadcast(self.id, event, arg1, arg2, arg3);
      }
    };
  };
};


/*
 * (Private) Init
 * Loads the room dependency
 * Can only be run once.
 *
 * - room (Room) : room class
 */

var init = function init (_room) {
  Room = _room;
  allSockets = Room.get('all');
  return module.exports;
};


module.exports = {
  bind: bind,
  init: init
};