implement getTotalSize rpc

This commit is contained in:
ansuz 2017-04-07 10:09:59 +02:00
parent 2ecabbe6e3
commit 3380cf0348
2 changed files with 41 additions and 40 deletions

47
rpc.js
View File

@ -178,6 +178,38 @@ var getChannelList = function (store, publicKey, cb) {
}); });
}; };
var getFileSize = function (store, channel, cb) {
if (!isValidChannel(channel)) {
console.log(channel);
Trace('INVALID_CHAN');
return void cb('INVALID_CHAN');
}
return void store.getChannelSize(channel, function (e, size) {
if (e) { return void cb(e.code); }
cb(void 0, size);
});
};
var getTotalSize = function (pinStore, messageStore, publicKey, cb) {
var bytes = 0;
return void getChannelList(pinStore, publicKey, function (channels) {
if (!channels) { cb('NO_ARRAY'); } // unexpected
var count = channels.length;
if (!count) { cb(void 0, 0); }
channels.forEach(function (channel) {
return messageStore.getChannelSize(channel, function (e, size) {
count--;
if (!e) { bytes += size; }
if (count === 0) { return cb(void 0, bytes); }
});
});
});
};
var hashChannelList = function (A) { var hashChannelList = function (A) {
var uniques = []; var uniques = [];
@ -305,22 +337,17 @@ RPC.create = function (config, cb) {
return unpinChannel(store, safeKey, msg[1], function (e) { return unpinChannel(store, safeKey, msg[1], function (e) {
Respond(e); Respond(e);
}); });
case 'GET_HASH': case 'GET_HASH':
return void getHash(store, safeKey, function (hash) { return void getHash(store, safeKey, function (hash) {
Respond(void 0, hash); Respond(void 0, hash);
}); });
case 'GET_TOTAL_SIZE': case 'GET_TOTAL_SIZE':
return void Respond('NOT_IMPLEMENTED', msg); return getTotalSize(store, ctx.store, safeKey, function (e, size) {
case 'GET_FILE_SIZE': if (e) { return void Respond(e); }
if (!isValidChannel(msg[1])) { Respond(e, size);
return void Respond('INVALID_CHAN');
}
return void ctx.store.getChannelSize(msg[1], function (e, size) {
if (e) { return void Respond(e.code); }
Respond(void 0, size);
}); });
case 'GET_FILE_SIZE':
return void getFileSize(ctx.store, msg[1], Respond);
default: default:
return void Respond('UNSUPPORTED_RPC_CALL', msg); return void Respond('UNSUPPORTED_RPC_CALL', msg);
} }

View File

@ -28,34 +28,8 @@ define([
rpc.send('GET_FILE_SIZE', file, cb); rpc.send('GET_FILE_SIZE', file, cb);
}; };
var getFileListSize = function (rpc, list, cb) { var getFileListSize = function (rpc, cb) {
var bytes = 0; return rpc.send('GET_TOTAL_SIZE', undefined, cb);
var left = list.length;
list.forEach(function (chan) {
getFileSize(rpc, chan, function (e, msg) {
if (e) {
if (e === 'ENOENT') {
// these channels no longer exists on the server
console.log(e, chan);
} else {
console.error(e);
}
} else if (msg && msg[0] && typeof(msg[0]) === 'number') {
bytes += msg[0];
//console.log(bytes);
} else {
console.log("returned message was not a number: ", msg);
}
--left;
if (left === 0) {
cb(void 0, bytes);
}
});
});
}; };
var pinChannel = function (rpc, channel, cb) { var pinChannel = function (rpc, channel, cb) {
@ -108,8 +82,8 @@ define([
exp.getFileSize = function (file, cb) { exp.getFileSize = function (file, cb) {
getFileSize(rpc, file, cb); getFileSize(rpc, file, cb);
}; };
exp.getFileListSize = function (list, cb) { exp.getFileListSize = function (cb) {
getFileListSize(rpc, list, cb); getFileListSize(rpc, cb);
}; };
exp.getServerHash = function (cb) { exp.getServerHash = function (cb) {
getServerHash(rpc, edPublic, cb); getServerHash(rpc, edPublic, cb);