Skip to content

Commit

Permalink
peer directory added
Browse files Browse the repository at this point in the history
  • Loading branch information
arunoda committed Mar 31, 2013
1 parent 2496933 commit e9649a7
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 9 deletions.
12 changes: 12 additions & 0 deletions conf/config.json
@@ -0,0 +1,12 @@
{
"port": 5005,
"mongo": {
"url": "mongodb://localhost/peerman",
"collections": {
"directory": "directory"
}
},
"logger": {
"level": "debug"
}
}
6 changes: 5 additions & 1 deletion lib/clientManager.js
Expand Up @@ -7,10 +7,14 @@ var ConnectionHandler = require('./handlers/connection');

function ClientManager(sockets, models) {

if(!(this instanceof ClientManager)) {
return new ClientManager(sockets, models);
}

var SERVER_ID = uuid.v4();
var clients = {};

var directoryHandler = new DirectoryHandler(SERVER_ID, clients, model.directory);
var directoryHandler = new DirectoryHandler(SERVER_ID, clients, models.directory);
var connectionHandler = new ConnectionHandler(SERVER_ID, clients);

sockets.on('connection', function(socket) {
Expand Down
20 changes: 12 additions & 8 deletions lib/handlers/directory.js
Expand Up @@ -10,8 +10,8 @@ function DirectoryHandler(serverId, clients, model) {

var name;
client.once('init', onInit);
client.on('connect-with', onConnectWith);
client.on('disconnect-with', onDisconnectWith);
client.on('add-peer', onAddPeer);
client.on('remove-peer', onRemovePeer);
client.on('add-resource', onAddResource);
client.on('remove-resource', onRemoveResource);
client.on('request-peer', onRequestPeer);
Expand All @@ -25,6 +25,10 @@ function DirectoryHandler(serverId, clients, model) {
interestedResources: interestedResources
});

totalInterested = totalInterested || 5;
existingPeerList = existingPeerList || [];
interestedResources = interestedResources || [];

name = myId;
model.save(name, {
online: true,
Expand All @@ -36,16 +40,16 @@ function DirectoryHandler(serverId, clients, model) {
}, onModelError('onInit'));
}

function onConnectWith(peerId) {
function onAddPeer(peerId) {

logger.info('connect with peer', {client: name, peer: peerId});
model.addPeer(name, peerId, onModelError('onConnectWith'));
model.addPeer(name, peerId, onModelError('onAddPeer'));
}

function onDisconnectWith(peerId) {
function onRemovePeer(peerId) {

logger.info('disconnect with peer', {client: name, peer: peerId});
model.removePeer(name, peerId, onModelError('onDisconnectWith'));
model.removePeer(name, peerId, onModelError('onRemovePeer'));
}

function onAddResource(resource) {
Expand All @@ -70,8 +74,8 @@ function DirectoryHandler(serverId, clients, model) {

logger.info('disconnecting client', {client: name});

client.removeListener('connect-with', onConnectWith);
client.removeListener('disconnect-with', onDisconnectWith);
client.removeListener('add-peer', onAddPeer);
client.removeListener('remove-peer', onRemovePeer);
client.removeListener('add-resource', onAddResource);
client.removeListener('remove-resource', onRemoveResource);
client.removeListener('request-peer', onRequestPeer);
Expand Down
4 changes: 4 additions & 0 deletions lib/models/directory.js
@@ -1,5 +1,9 @@
function DirectoryModel(collection) {

if(!(this instanceof DirectoryModel)) {
return new DirectoryModel(collection);
}

var self = this;

/*
Expand Down
40 changes: 40 additions & 0 deletions start-server.js
@@ -0,0 +1,40 @@
//config
var config = require('./conf/config.json');
var http = require('http');
var express = require('express');
var mongo = require('mongodb');
var socketIo = require('socket.io');

// better logging
var winstoon = require('winstoon');
var logger = winstoon.createLogger('/');
winstoon.add(winstoon.transports.Console);
winstoon.setRootLevel(config.logger.level);

//app
var app = express();
var server = http.createServer(app);
var io = socketIo.listen(server);
io.set('log level', 1);
io.set('browser client minification', 1);

//db and models
mongo.MongoClient.connect(config.mongo.url, afterMongoConnected);

var port = parseInt(process.argv[2]) || config.port;
logger.info('starting peerman server', {port: port});
server.listen(port);

function afterMongoConnected (err, db) {

if(err) throw err;

//models
var models = {};
var collection = db.collection(config.mongo.collections.directory);
models.directory = require('./lib/models/directory')(collection);

//clientManager
var clientManager = require('./lib/clientManager')(io.sockets, models);
}

0 comments on commit e9649a7

Please sign in to comment.