From c5a8be2b6282d2042e469e1b7c1e7ce8795c026f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Sat, 6 Feb 2016 16:22:39 +0100 Subject: Rename webtorrent files (process/node) --- lib/webtorrentProcess.js | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 lib/webtorrentProcess.js (limited to 'lib/webtorrentProcess.js') diff --git a/lib/webtorrentProcess.js b/lib/webtorrentProcess.js new file mode 100644 index 000000000..7dc655f10 --- /dev/null +++ b/lib/webtorrentProcess.js @@ -0,0 +1,95 @@ +;(function () { + 'use strict' + + function webtorrent (args) { + var WebTorrent = require('webtorrent') + var ipc = require('node-ipc') + + if (args.length !== 3) { + console.log('Wrong arguments number: ' + args.length + '/3') + process.exit(-1) + } + + var host = args[1] + var port = args[2] + var nodeKey = 'webtorrentnode' + port + var processKey = 'webtorrentprocess' + port + + ipc.config.silent = true + ipc.config.id = processKey + + if (host === 'client' && port === '1') global.WEBTORRENT_ANNOUNCE = [] + else global.WEBTORRENT_ANNOUNCE = 'ws://' + host + ':' + port + '/tracker/socket' + var wt = new WebTorrent({ dht: false }) + + function seed (data) { + var args = data.args + var path = args.path + var _id = data._id + + wt.seed(path, { announceList: '' }, function (torrent) { + var to_send = { + magnetUri: torrent.magnetURI + } + + ipc.of[nodeKey].emit(nodeKey + '.seedDone.' + _id, to_send) + }) + } + + function add (data) { + var args = data.args + var magnetUri = args.magnetUri + var _id = data._id + + wt.add(magnetUri, function (torrent) { + var to_send = { + files: [] + } + + torrent.files.forEach(function (file) { + to_send.files.push({ path: file.path }) + }) + + ipc.of[nodeKey].emit(nodeKey + '.addDone.' + _id, to_send) + }) + } + + function remove (data) { + var args = data.args + var magnetUri = args.magnetUri + var _id = data._id + + try { + wt.remove(magnetUri, callback) + } catch (err) { + console.log('Cannot remove the torrent from WebTorrent.') + return callback(null) + } + + function callback () { + var to_send = {} + ipc.of[nodeKey].emit(nodeKey + '.removeDone.' + _id, to_send) + } + } + + console.log('Configuration: ' + host + ':' + port) + console.log('Connecting to IPC...') + + ipc.connectTo(nodeKey, function () { + ipc.of[nodeKey].on(processKey + '.seed', seed) + ipc.of[nodeKey].on(processKey + '.add', add) + ipc.of[nodeKey].on(processKey + '.remove', remove) + + ipc.of[nodeKey].emit(processKey + '.ready') + console.log('Ready.') + }) + + process.on('uncaughtException', function (e) { + ipc.of[nodeKey].emit(processKey + '.exception', { exception: e }) + }) + } + + // --------------------------------------------------------------------------- + + module.exports = webtorrent +})() -- cgit v1.2.3