fdboost
Version:
Performance enhanced utilities for FoundationDB
148 lines (128 loc) • 3.55 kB
text/coffeescript
class EncodedString extends Buffer
module.exports = class AbstractAdapter
###*
* Extend an AbstractAdapter instance for encoding and decoding typed values.
*
* {(Buffer|undefined|string|integer|double|boolean|null|date|array|object)} valueOrBuffer Value to encode or buffer instance to decode.
* {integer} [pos=0] Buffer position to start writing data.
* {Buffer} data Encoded buffer.
* {(undefined|string|integer|double|boolean|null|date|array|object)} value Decoded value.
* {object} Extended AbstractAdapter instance.
###
constructor: (valueOrBuffer, = 0) ->
= null
if (Buffer.isBuffer(valueOrBuffer))
=
else
###*
* Get Buffer type.
*
* {class}
###
getType: ->
throw new Error('not implemented')
###*
* Initializes a new buffer.
*
* {integer} size Size of new buffer.
* {undefined}
###
initData: (size) ->
TypedBuffer =
= new TypedBuffer( + size)
return
###*
* Verifies that a data buffer exists.
*
* {undefined}
###
verifyData: ->
throw new Error('Data property not initialized') if is null
return
###*
* Loads data into initialized buffer instance.
*
* {(undefined|string|integer|double|boolean|null|date|array|object)} value Value to encode to buffer.
* {undefined}
###
loadData: (value) ->
return
###*
* Writes string to data buffer.
*
* {string} value String value to write.
* {undefined}
###
writeString: (value) ->
.write(value, , value.length, 'utf8')
+= value.length
return
###*
* Writes double to data buffer.
*
* {double} value Double value to write.
* {undefined}
###
writeDoubleBE: (value) ->
.writeDoubleBE(value, )
+= 8
return
###*
* Writes 32bit Big Endian signed integer to data buffer.
*
* {integer} value Integer value to write.
* {undefined}
###
writeInt32BE: (value) ->
.writeInt32BE(value, )
+= 4
return
###*
* Writes 32bit Little Endian signed integer to data buffer.
*
* {integer} value Integer value to write.
* {undefined}
###
writeInt32LE: (value) ->
.writeInt32LE(value, )
+= 4
return
###*
* Writes 8bit unsigned integer to data buffer.
*
* {integer} value Integer value to write.
* {undefined}
###
writeUInt8: (value) ->
.writeUInt8(value, )
+= 1
return
###*
* Writes 32bit unsigned Little Endian integer to data buffer.
*
* {integer} value Integer value to write.
* {undefined}
###
writeUInt32LE: (value) ->
.writeUInt32LE(value, )
+= 4
return
###*
* Copies data from source buffer to data buffer.
*
* {Buffer} source Source buffer to copy data from.
* {undefined}
###
copyFrom: (source) ->
source.copy( , )
+= source.length
return