Last active
November 4, 2016 11:22
-
-
Save red010182/17214f2ca94265ecbe9d0f155f4ce8ec to your computer and use it in GitHub Desktop.
An implementation of pinger-async-await.js in iced-coffeescript (originally: https://hackernoon.com/an-ode-to-async-await-7da2dd3c2056#.46ow5v6g9)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
request = require 'request' | |
delay = (sec, func) -> setTimeout func, sec*1000 | |
repeat = (sec, func) -> setInterval func, sec*1000 | |
servers = [ | |
{ url: "http://www.sevengramscaffe.com", failures: 0 }, | |
{ url: "http://www.hernanparra.co", failures: 0 }, | |
{ url: "http://www.thetimeandyou.com", failures: 0 }, | |
{ url: "http://www.luchoycarmelo.com", failures: 0 } | |
] | |
repeatTimes = 3 | |
delaySeconds = 1 | |
pingOneServer = (url, times, delaySeconds, callback) -> | |
delayPing = (sec, url, callback) -> delay sec, -> request url, (err, res, body) -> callback(err,res,body) | |
repeated = 0 | |
failures = 0 | |
for i in [0...times] | |
delayPing delaySeconds, url, (err, res, body) -> | |
failures += 1 if err or res.statusCode isnt 200 | |
callback failures if ++repeated is times | |
pingServers = (servers) -> | |
( (server) -> pingOneServer server.url, repeatTimes, delaySeconds, (failures) -> | |
console.log "#{server.url} fails #{failures} times" | |
)(server) for server in servers | |
pingServers servers |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
request = require 'request' | |
delay = (sec, func) -> setTimeout func, sec*1000 | |
repeat = (sec, func) -> setInterval func, sec*1000 | |
servers = [ | |
{ url: "http://www.sevengramscaffe.com", failures: 0 }, | |
{ url: "http://www.hernanparra.co", failures: 0 }, | |
{ url: "http://www.thetimeandyou.com", failures: 0 }, | |
{ url: "http://www.luchoycarmelo.com", failures: 0 } | |
] | |
repeatTimes = 3 | |
delaySeconds = 1 | |
pingOneServer = (url, times, delaySeconds, callback) -> | |
delayPing = (sec, url, callback) -> delay sec, -> request url, (err, res, body) -> callback(err,res,body) | |
failures = 0 | |
for i in [0...times] | |
await delayPing delaySeconds, url, defer err, res, body | |
failures = failures + 1 if err or res.statusCode isnt 200 | |
callback failures | |
pingServers = (servers) -> | |
await pingOneServer server.url, repeatTimes, delaySeconds, defer server.failures for server in servers | |
console.log "#{server.url} fails #{server.failures} times" for server in servers | |
pingServers servers |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment