Refactored files and server

This commit is contained in:
Michael Schmatz 2014-01-27 11:14:44 -08:00
parent 45634e9413
commit 4d1c772719
4 changed files with 75 additions and 10 deletions

View file

@ -18,7 +18,8 @@ logging = require './server/logging'
sprites = require './server/sprites'
contact = require './server/contact'
languages = require './server/languages'
queue = require './server/queue'
multiplayer = require './server/multiplayer'
sendwithus = require './server/sendwithus'
https = require 'https'
http = require 'http'
@ -76,6 +77,10 @@ app.configure(->
app.configure('development', -> app.use(express.errorHandler()))
multiplayer.connectToScoringQueue()
sendwithus.setupQueue()
auth.setupRoutes(app)
db.setupRoutes(app)
sprites.setupRoutes(app)
@ -83,7 +88,8 @@ contact.setupRoutes(app)
file.setupRoutes(app)
folder.setupRoutes(app)
languages.setupRoutes(app)
queue.setupRoutes(app)
multiplayer.setupRoutes(app)
sendwithus.setupQueue app
# Some sort of cross-domain communication hack facebook requires
app.get('/channel.html', (req, res) ->
@ -121,3 +127,5 @@ isOldBrowser = (req) ->
return true if b is 'Firefox' and v < 21
return true if b is 'IE' and v < 10
false

27
server/multiplayer.coffee Normal file
View file

@ -0,0 +1,27 @@
config = require '../server_config'
winston = require 'winston'
mongoose = require 'mongoose'
async = require 'async'
errors = require './errors'
aws = require 'aws-sdk'
db = require './db'
mongoose = require 'mongoose'
events = require 'events'
queues = require 'queue'
module.exports.connectToScoringQueue = -> queues.initializeScoringTaskQueue() unless queues.scoringTaskQueue?
module.exports.setupRoutes = (app) ->
return
module.exports.setupRoutes = (app) ->
app.all '/multiplayer/*', (req, res) ->
unless scoringTaskQueue?
errors.custom res, 503, "Currently initializing scoring queue"
return

View file

@ -8,10 +8,12 @@ db = require './db'
mongoose = require 'mongoose'
events = require 'events'
queueClient = null
simulationQueue = null
queueClient = unefined
module.exports.scoringTaskQueue = undefined
module.exports.sendwithusQueue = undefined
module.exports.setupRoutes = (app) ->
#module.exports.setupRoutes = (app) ->
# app.get '/multiplayer/'
###queueClient.registerQueue "simulationQueue", {}, (err,data) ->
simulationQueue = data
simulationQueue.subscribe 'message', (err, data) ->
@ -21,10 +23,31 @@ module.exports.setupRoutes = (app) ->
winston.info "Deleted message"
###
module.exports.initializeScoringTaskQueue = (cb) ->
queueClient = generateQueueClient() unless queueClient?
queueClient.registerQueue "scoring", {}, (err,data) ->
if err?
winston.error "There was an error registering the scoring queue."
throw new Error "There was an error registering the scoring queue."
module.exports.scoringTaskQueue = data
cb? err, module.exports.scoringQueue
module.exports.initializeSendwithusQueue = (cb) ->
queueClient = generateQueueClient() unless queueClient?
queueClient.registerQueue "sendwithus", {}, (err,data) ->
if err?
errorString = "There was an error registering the sendwithus queue."
winston.error errorString
throw new Error errorString
module.exports.sendwithusQueue = data
cb? err, module.exports.sendwithusQueue
module.exports.generateQueueClient = ->
generateQueueClient = ->
if config.isProduction
queueClient = new SQSQueueClient()
else
@ -117,7 +140,7 @@ class MongoQueueClient
generateMessageModel: ->
#do find something like: messages not processing, queue as current queue, visibility time before now, sort by insertion time, findOne
schema = new mongoose.Schema
messageBody : Object,
messageBody: Object,
processing: false,
insertionTime: {type: Date, default: Date.now }
queue: String
@ -139,15 +162,15 @@ class MongoQueue extends events.EventEmitter
receieveMessage: (callback) ->
conditions = {queue: @queueName, processing: false, scheduledVisibilityTime: {$lt:Date.now()}}
options = {sort: 'insertionTime'}
update = {$set:{processing: true}}
options = {sort: 'scheduledVisibilityTime'}
update = {$set: {processing: true}}
@Message.findOneAndUpdate conditions, update, options, =>
if err? then @emit 'error',err,data else @emit 'message',err,data
callback? err,data
deleteMessage: (receiptHandle, callback) ->
#receiptHandle in this case is an ID
conditions = {queue: @queueName, _id : receiptHandle}
conditions = {queue: @queueName, _id: receiptHandle}
@Message.findOneAndRemove conditions, {}, =>
if err? then @emit 'error',err,data else @emit 'message',err,data
callback? err,data

View file

@ -1,6 +1,13 @@
config = require '../server_config'
sendwithusAPI = require 'sendwithus'
swuAPIKey = config.mail.sendwithusAPIKey
queues = require './queue'
module.exports.setupQueue = -> queues.initializeSendwithusQueue() unless queues.sendwithusQueue?
module.exports.setupRoutes = (app) ->
return
options = { DEBUG: not config.isProduction }
module.exports.api = new sendwithusAPI swuAPIKey, options