yjs/build/node/Connectors/PeerJsConnector.js.map
2014-08-24 01:52:28 +02:00

1 line
7.6 KiB
Plaintext
Executable File

{"version":3,"sources":["Connectors/PeerJsConnector.coffee"],"names":[],"mappings":"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","file":"Connectors/PeerJsConnector.js","sourceRoot":"/source/","sourcesContent":["\n#\n# @overload createPeerJsConnector peerjs_options, callback\n# @param {Object} peerjs_options Is the options object that is passed to PeerJs.\n# @param {Function} callback The callback is called when the connector is initialized.\n# @overload createPeerJsConnector peerjs_user_id, peerjs_options, callback\n# @param {String} peerjs_user_id The user_id that is passed to PeerJs as the user_id and should be unique between all (also the unconnected) Peers.\n# @param {Object} peerjs_options Is the options object that is passed to PeerJs.\n# @param {Function} callback The callback is called when the connector is initialized.\n#\ncreatePeerJsConnector = ()->\n peer = null\n if arguments.length is 2\n peer = new Peer arguments[0]\n callback = arguments[1]\n else\n peer = new Peer arguments[0], arguments[1]\n callback = arguments[2]\n\n\n #\n # PeerJs is a Framework that enables you to connect to other peers. You just need the\n # user-id of the peer (browser/client). And then you can connect to it.\n # @see http://peerjs.com\n #\n class PeerJsConnector\n\n #\n # @param {Engine} engine The transformation engine\n # @param {HistoryBuffer} HB\n # @param {Array<Function>} execution_listener You must ensure that whenever an operation is executed, every function in this Array is called.\n # @param {Yatta} yatta The Yatta framework.\n #\n constructor: (@engine, @HB, @execution_listener, @yatta)->\n\n @peer = peer\n @connections = {}\n\n @peer.on 'connection', (conn)=>\n @addConnection conn\n\n send_ = (o)=>\n if o.uid.creator is @HB.getUserId() and (typeof o.uid.op_number isnt \"string\")\n for conn_id,conn of @connections\n conn.send\n op: o\n @execution_listener.push send_\n\n #\n # Connect the Framework to another peer. Therefore you have to receive his\n # user_id. If the other peer is connected to other peers, the PeerJsConnector\n # will automatically connect to them too.\n #\n # Transmitting the user_id is your job.\n # See [TextEditing](../../examples/TextEditing/) for a nice example\n # on how to do that with urls.\n #\n # @param id {String} Connection id\n #\n connectToPeer: (id)->\n if not @connections[id]? and id isnt @yatta.getUserId()\n @addConnection peer.connect id\n\n #\n # Receive the id of every connected peer.\n # @return {Array<String>} A list of Peer-Ids\n #\n getAllConnectionIds: ()->\n for conn_id of @connections\n conn_id\n\n #\n # Adds an existing connection to this connector.\n # @param conn {PeerJsConnection}\n #\n addConnection: (conn)->\n #\n # What this method does:\n # * Send state vector\n # * Receive HB -> apply them\n # * Send connections\n # * Receive Connections -> Connect to unknow connections\n @connections[conn.peer] = conn\n initialized_me = false\n initialized_him = false\n conn.on 'data', (data)=>\n if data is \"empty_message\"\n # nop\n else if data.HB?\n initialized_me = true\n @engine.applyOpsCheckDouble data.HB\n conn.send\n conns: @getAllConnectionIds()\n else if data.op?\n @engine.applyOp data.op\n else if data.conns?\n for conn_id in data.conns\n @connectToPeer conn_id\n else if data.state_vector?\n if not initialized_him\n # make sure, that it is sent only once\n conn.send\n HB: @yatta.getHistoryBuffer()._encode(data.state_vector)\n initialized_him = true\n else\n throw new Error \"Can't parse this operation\"\n\n sendStateVector = ()=>\n conn.send\n state_vector: @HB.getOperationCounter()\n if not initialized_me\n # Because of a bug in PeerJs,\n # we never know if state vector was actually sent\n setTimeout sendStateVector, 100\n sendStateVector()\n\n peer.on 'open', (id)->\n callback PeerJsConnector, id\n\n\nmodule.exports = createPeerJsConnector\nif window?\n if not window.Y?\n window.Y = {}\n window.Y.createPeerJsConnector = createPeerJsConnector\n\n"]}