dat-replication-protocol

streaming implementation of the dat replication protocol

dat-replication-protocol

Streaming implementation of the dat replication protocol

npm install dat-replication-protocol

var protocol = require('dat-replication-protocol')
 
var decode = protocol.decode()
var encode = protocol.encode()
 
decode.change(function(changecb) {
  // received a change 
  cb()
})
 
decode.blob(function(blobcb) {
  // received a blob stream 
  blob.on('data', function(data) {
    console.log(data)
  })
  blob.on('end', function() {
    cb()
  })
})
 
decode.finalize(function(cb) {
  // should finalize stuff 
  cb()
})
 
// write changes data 
encode.change({
  key: 'some-row-key',
  change: 0,
  from: 0,
  to: 1,
  value: new Buffer('some binary value')
}, functoin() {
  console.log('change was flushed')
})
 
var blob = encode.blob(12) // 12 is the length of the blob 
 
blob.write('hello ')
blob.write('world\n')
blob.end()
 
encode.finalize() // end the encode stream 
 
// set up the pipeline 
e.pipe(d)

Basically all changes and blobs are sent as multibuffers (varint prefixed).

--------------------------------------------------
|  varint length  |  single byte id  |  payload  |
--------------------------------------------------

Since blobs can be large they are treated as streams.

MIT