48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | const Packet = require('../packets/packet'); | ||
|  | 
 | ||
|  | class TextRow { | ||
|  |   constructor(columns) { | ||
|  |     this.columns = columns || []; | ||
|  |   } | ||
|  | 
 | ||
|  |   static fromPacket(packet) { | ||
|  |     // packet.reset(); // set offset to starting point?
 | ||
|  |     const columns = []; | ||
|  |     while (packet.haveMoreData()) { | ||
|  |       columns.push(packet.readLengthCodedString()); | ||
|  |     } | ||
|  |     return new TextRow(columns); | ||
|  |   } | ||
|  | 
 | ||
|  |   static toPacket(columns, encoding) { | ||
|  |     const sequenceId = 0; // TODO remove, this is calculated now in connecton
 | ||
|  |     let length = 0; | ||
|  |     columns.forEach((val) => { | ||
|  |       if (val === null || typeof val === 'undefined') { | ||
|  |         ++length; | ||
|  |         return; | ||
|  |       } | ||
|  |       length += Packet.lengthCodedStringLength(val.toString(10), encoding); | ||
|  |     }); | ||
|  |     const buffer = Buffer.allocUnsafe(length + 4); | ||
|  |     const packet = new Packet(sequenceId, buffer, 0, length + 4); | ||
|  |     packet.offset = 4; | ||
|  |     columns.forEach((val) => { | ||
|  |       if (val === null) { | ||
|  |         packet.writeNull(); | ||
|  |         return; | ||
|  |       } | ||
|  |       if (typeof val === 'undefined') { | ||
|  |         packet.writeInt8(0); | ||
|  |         return; | ||
|  |       } | ||
|  |       packet.writeLengthCodedString(val.toString(10), encoding); | ||
|  |     }); | ||
|  |     return packet; | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = TextRow; |