ndn-message-channel-transport
Version:
HTML5 messageChannel binding for NDN-js
77 lines (64 loc) • 2.67 kB
JavaScript
var ndn = require('ndn-lib')
ndn.messageChannelTransport = require('../../ndn-messageChannelTransport.js')
console.log(ndn)
function onInterest1 (prefix,interest,transport){
console.log("got interest", prefix)
var d = new ndn.Data(new ndn.Name(interest.name.toUri()), new ndn.SignedInfo(), "success")
d.signedInfo.setFields()
var encoded = d.wireEncode()
console.log("sending encoded", encoded)
transport.send(encoded.buffer)
}
function onInterest2 (prefix,interest,transport){
console.log("got interest", prefix)
var d = new ndn.Data(new ndn.Name(interest.name.toUri()), new ndn.SignedInfo(), "success")
d.signedInfo.setFields()
var encoded = d.wireEncode()
console.log("sending encoded", encoded)
transport.send(encoded.buffer)
}
var testvars = {}
function init(){
var ms = new MessageChannel()
, RegisteredPrefix = function RegisteredPrefix(prefix, closure) { this.prefix = new ndn.Name(prefix); this.closure = closure}
, transport1 = new ndn.messageChannelTransport.transport(ms.port1)
, transport2 = new ndn.messageChannelTransport.transport(ms.port2)
, face1 = new ndn.Face({host: 1, port: 1, getTransport: function(){return transport1}})
, face2 = new ndn.Face({host: 1, port: 1, getTransport: function(){return transport2}})
, closure1 = new ndn.Face.CallbackClosure(null, null, onInterest1, 'face1', face1.transport)
, closure2 = new ndn.Face.CallbackClosure(null, null, onInterest2, 'face2', face2.transport)
testvars.interest1 = new ndn.Interest(new ndn.Name('face2/test'))
testvars.interest2 = new ndn.Interest(new ndn.Name('face1/test'))
testvars.face1 = face1
testvars.face2 = face2
face1.transport.connect(face1, function(){console.log('connect')})
face2.transport.connect(face2, function(){console.log('connect')})
ndn.Face.registeredPrefixTable.push(new RegisteredPrefix('face1', closure1));
ndn.Face.registeredPrefixTable.push(new RegisteredPrefix('face2', closure2));
}
describe('messageChannelTransport', function(){
describe('should allow bi-directional interest and data exchange', function(){
before(init)
it('face1 --> face2 --> face1', function(done){
this.timeout(30000)
function onData(a,b) {
console.log(a,b)
done()
}
function onTimeout(){
throw new Error('not working')
}
testvars.face1.expressInterest(testvars.interest2, onData, onTimeout)
})
it('face2 --> face1 --> face2', function(done){
function onData(a,b) {
console.log(a,b)
done()
}
function onTimeout(){
throw new Error('not working')
}
testvars.face2.expressInterest(testvars.interest1, onData, onTimeout)
})
})
})