12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /*
- * vim: ts=4:sw=4:expandtab
- */
- function ProtoParser(arrayBuffer, protobuf) {
- this.protobuf = protobuf;
- this.buffer = new dcodeIO.ByteBuffer();
- this.buffer.append(arrayBuffer);
- this.buffer.offset = 0;
- this.buffer.limit = arrayBuffer.byteLength;
- }
- ProtoParser.prototype = {
- constructor: ProtoParser,
- next: function() {
- try {
- if (this.buffer.limit === this.buffer.offset) {
- return undefined; // eof
- }
- var len = this.buffer.readVarint32();
- var nextBuffer = this.buffer.slice(
- this.buffer.offset, this.buffer.offset+len
- ).toArrayBuffer();
- // TODO: de-dupe ByteBuffer.js includes in libaxo/libts
- // then remove this toArrayBuffer call.
- var proto = this.protobuf.decode(nextBuffer);
- this.buffer.skip(len);
- if (proto.avatar) {
- var attachmentLen = proto.avatar.length;
- proto.avatar.data = this.buffer.slice(
- this.buffer.offset, this.buffer.offset + attachmentLen
- ).toArrayBuffer();
- this.buffer.skip(attachmentLen);
- }
- return proto;
- } catch(e) {
- console.log(e);
- }
- }
- };
- var GroupBuffer = function(arrayBuffer) {
- ProtoParser.call(this, arrayBuffer, textsecure.protobuf.GroupDetails);
- };
- GroupBuffer.prototype = Object.create(ProtoParser.prototype);
- GroupBuffer.prototype.constructor = GroupBuffer;
- var ContactBuffer = function(arrayBuffer) {
- ProtoParser.call(this, arrayBuffer, textsecure.protobuf.ContactDetails);
- };
- ContactBuffer.prototype = Object.create(ProtoParser.prototype);
- ContactBuffer.prototype.constructor = ContactBuffer;
|