From 95b17838e3119420e683ba48e99029b686339630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E9=83=91?= Date: Fri, 8 Aug 2014 11:39:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20list=20=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SSDB.js | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) diff --git a/SSDB.js b/SSDB.js index 2280ae0..ee0dca3 100644 --- a/SSDB.js +++ b/SSDB.js @@ -438,6 +438,186 @@ exports.connect = function(host, port, timeout, listener){ }); } + ////////////////////////////////////////////// + + // callback(err, size) + self.qsize = function(name, callback){ + self.request('qsize', [name], function(resp){ + if(callback){ + var err = resp[0] == 'ok'? 0 : resp[0]; + if(resp.length == 2){ + var size = parseInt(resp[1]); + callback(err, size); + }else{ + callback('error'); + } + } + }); + } + + + // callback(err, count) + self.qclear = function(name, callback){ + self.request('qclear', [name], function(resp){ + if(callback){ + var err = resp[0] == 'ok'? 0 : resp[0]; + if(resp.length == 2) { + var count = parseInt(resp[1]); + callback(err, count); + } else { + callback('error'); + } + } + }); + } + + // callback(err, item) + self.qfront = function(name, callback){ + self.request('qfront', [name], function(resp){ + if(callback){ + var err = resp[0] == 'ok'? 0 : resp[0]; + if(resp.length == 2) { + var item = resp[1]; + callback(err, item); + } else { + callback('error', null); + } + } + }); + } + + // callback(err, item) + self.qback = function(name, callback){ + self.request('qback', [name], function(resp){ + if(callback){ + var err = resp[0] == 'ok'? 0 : resp[0]; + if(resp.length == 2) { + var item = resp[1]; + callback(err, item); + } else { + callback('error', null); + } + } + }); + } + + // callback(err, item) + self.qget = function(name, index, callback){ + self.request('qget', [name, index], function(resp){ + if(callback){ + var err = resp[0] == 'ok'? 0 : resp[0]; + if(resp.length == 2) { + var item = resp[1]; + callback(err, item); + } else { + callback('error', null); + } + } + }); + } + + // callback(err, items) + self.qslice = function(name, begin, end, callback){ + self.request('qslice', [name, begin, end], function(resp){ + if(callback){ + var err = resp[0] == 'ok'? 0 : resp[0]; + if(resp.length >= 2) { + var items = []; + for(var i = 1, l = resp.length; i < l; i++) { + items.push(resp[i]); + } + callback(err, items); + } else { + callback('error', null); + } + } + }); + } + + // callback(err, size) + self.qpush_front = function(name, item, callback){ + var param = [name]; + if(Object.prototype.toString.call(item) === '[object String]') { + param.push(item); + } else { + item.forEach(function(v, k){ + param.push(v); + }); + } + self.request('qpush_front', param, function(resp){ + if(callback){ + var err = resp[0] == 'ok'? 0 : resp[0]; + if(resp.length == 2) { + self.qsize(name, function(_err, size) { + callback(err, size); + }); + } else { + callback('error', null); + } + } + }); + } + + // callback(err, size) + self.qpush_back = function(name, item, callback){ + var param = [name]; + if(Object.prototype.toString.call(item) === '[object String]') { + param.push(item); + } else { + item.forEach(function(v, k){ + param.push(v); + }); + } + self.request('qpush_back', param, function(resp){ + if(callback){ + var err = resp[0] == 'ok'? 0 : resp[0]; + if(resp.length == 2) { + self.qsize(name, function(_err, size) { + callback(err, size); + }); + } else { + callback('error', null); + } + } + }); + } + + // callback(err, size) + self.qpush = self.qpush_back; + + // callback(err, size) + self.qpop_front = function(name, callback){ + self.request('qpop_front', [name], function(resp){ + if(callback){ + var err = resp[0] == 'ok'? 0 : resp[0]; + if(resp.length == 2) { + var item = resp[1]; + callback(err, item); + } else { + callback('error', null); + } + } + }); + } + + // callback(err, size) + self.qpop = self.qpop_front; + + // callback(err, size) + self.qpop_back = function(name, callback){ + self.request('qpop_back', [name], function(resp){ + if(callback){ + var err = resp[0] == 'ok'? 0 : resp[0]; + if(resp.length == 2) { + var item = resp[1]; + callback(err, item); + } else { + callback('error', null); + } + } + }); + } + return self; }