扩充Buffer的方法
感觉node.js的Buffer类的方法不太够用。 补充了一些方法: append: 往buffer里追加一块儿data indexOf: 在buffer里查询一块儿data ltrim: 把buffer里前N个字节给删除掉,并把后面剩余的部分移动到前面
Buffer.prototype.size = 0
Buffer.prototype.append = function(data){
data.copy(this,this.size,0,data.length)
this.size += data.length
}
Buffer.prototype.indexOf= function(data){
for(var i=0;i<this.size;i++){
j = 0
while(j<data.length){
if(data[j] == this[i+j]) j++
else break
}
if(j == data.length)
return i
}
return -1
}
Buffer.prototype.ltrim=function(N){
N = (N>this.size)? this.size : N
this.copy(this,0,N,this.size)
this.size -= N
}
5 回复
Buffer.prototype.size = 0
Buffer.prototype.append = function(data){
data.copy(this,this.size,0,data.length)
this.size += data.length
}
Buffer.prototype.indexOf= function(data){
for(var i=0;i<this.size;i++){
j = 0
while(j<data.length){
if(data[j] == this[i+j]) j++
else break
}
if(j == data.length)
return i
}
return -1
}
Buffer.prototype.ltrim=function(N){
N = (N>this.size)? this.size : N
this.copy(this,0,N,this.size)
this.size -= N
}
原帖的代码没贴好,第一句没有高亮。 在回复中补上了。
扩充一个size属性是为了哪般?
因为Buffer的Length属性是固定的,这个size 是用来表示实际上Buffer里有多少个字节,length属性更像是capability.
我理想中的Buffer类最好是像redis代码中的sds数据结构: https://github.com/antirez/redis/blob/unstable/src/sds.c