/*
* Vibe
* http://vibe-project.github.io/projects/vibe-protocol/
*
* Copyright 2014 The Vibe Project
* Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0
*/
var events = require("events");
/*
* Vibe
* http://vibe-project.github.io/projects/vibe-protocol/
*
* Copyright 2014 The Vibe Project
* Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0
*/
var events = require("events");
It creates a base transport.
module.exports = function(uri, options) {
A transport timeout in ms. It applies when a transport starts connection.
var timeout = options && options.timeout || 3000;
A transport object.
var self = new events.EventEmitter();
self.open = function() {
Establishes the real connection. `connect should be implemented by others.
self.connect(uri, options);
Sets a timeout timer.
var timeoutTimer = setTimeout(function() {
Fires a timeout error.
self.emit("error", new Error("timeout"));
close
should ensure that close
event is fired.
self.close();
}, timeout);
If it establishes a connection, cancels the timer.
self.on("open", function() {
clearTimeout(timeoutTimer);
});
If it fails to establish a connection before the timer expires, cancels the timer.
self.on("close", function() {
clearTimeout(timeoutTimer);
});
return this;
};
return self;
};