Skip to content

Commit

Permalink
Tidied up some of the connection code
Browse files Browse the repository at this point in the history
  • Loading branch information
argon committed Oct 9, 2010
1 parent 87da6ac commit c558c08
Showing 1 changed file with 26 additions and 22 deletions.
48 changes: 26 additions & 22 deletions lib/apn.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,11 @@ var Connection = function (optionArgs) {
if (optionArgs[k] !== undefined) options[k] = optionArgs[k];
}
}


var readyToConnect = function () {
return (hasKey && hasCert);
}

var startSocket = function () {
self.socket.connect(options['port'], options['gateway']);
}
Expand All @@ -50,7 +54,7 @@ var Connection = function (optionArgs) {
self.socket.on('data', function(data) { handleTransmissionError(data); });
self.socket.on('end', function () { self.socket.end(); });

var connect = invoke_after(startSocket);
var connect = invoke_after(function() { startSocket(); });

fs.readFile(options['cert'], connect(function(err, data) {
if(err) {
Expand Down Expand Up @@ -112,7 +116,7 @@ var Connection = function (optionArgs) {
// If error occurs then slice array and resend all stored notes.

if(self.socket.readyState != 'open') {
if(self.socket.readyState == 'closed' && hasKey && hasCert) {
if(self.socket.readyState == 'closed' && readyToConnect()) {
startSocket();
}
self.socket.on('connect',
Expand Down Expand Up @@ -265,16 +269,20 @@ var Feedback = function (optionArgs) {
if(typeof options['feedback'] != 'function') {
return Error(-1, 'A callback function must be specified');
}

this.readyToConnect = function () {
return (hasKey && hasCert);
}

var startSocket = function () {
this.startSocket = function () {
self.socket.connect(options['port'], options['address']);
}

self.socket.on('connect', function() { self.socket.setSecure(self.credentials); });
self.socket.on('data', function(data) { processData(data); });
self.socket.on('end', function () { self.socket.end(); });

var connect = invoke_after(startSocket);
var connect = invoke_after(function() { self.startSocket(); });

fs.readFile(options['cert'], connect(function(err, data) {
if(err) {
Expand All @@ -292,24 +300,8 @@ var Feedback = function (optionArgs) {
hasKey = true;
}));

this.request = function () {
if(self.socket.readyState == 'closed') {
if(!hasKey || !hasCert) {
// Connection will be made once both key and cert are available
return;
}
startSocket();
}
}

this.cancel = function () {
if(this.interval !== undefined) {
clearInterval(this.interval);
}
}

if(options['interval'] > 0) {
this.interval = setInterval(this.request, options['interval'] * 1000);
this.interval = setInterval(function() { self.request(); }, options['interval'] * 1000);
}

var processData = function(data) {
Expand Down Expand Up @@ -352,6 +344,18 @@ var Feedback = function (optionArgs) {
}
}

Feedback.prototype.request = function () {
if(this.socket.readyState == 'closed' && this.readyToConnect()) {
this.startSocket();
}
}

Feedback.prototype.cancel = function () {
if(this.interval !== undefined) {
clearInterval(this.interval);
}
}

function int2buf(number, buffer, start, length) {
length -= 1;
for(var i=0; i<=length; i++) {
Expand Down

0 comments on commit c558c08

Please sign in to comment.