From 76df707e3192ed870ca0ba03ff130cbbebf13b46 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 17 Sep 2013 11:48:08 -0700 Subject: [PATCH] add the ability to ask for multiple instances from JS page --- .../resources/web/assignment/css/style.css | 13 +++++++++++- .../resources/web/assignment/index.shtml | 3 +++ .../resources/web/assignment/js/assignment.js | 6 ++++++ domain-server/src/main.cpp | 21 ++++++++++++------- libraries/shared/src/Assignment.cpp | 6 ++++-- 5 files changed, 39 insertions(+), 10 deletions(-) diff --git a/domain-server/resources/web/assignment/css/style.css b/domain-server/resources/web/assignment/css/style.css index 000f2eff67..b6c26ca9fd 100644 --- a/domain-server/resources/web/assignment/css/style.css +++ b/domain-server/resources/web/assignment/css/style.css @@ -36,11 +36,22 @@ body { } #deploy-button { background-color: #0DFFBB; - right: 0px; + right: 85px; } #deploy-button:hover { background-color: #28FF57; } + +#instance-field { + position: absolute; + right: 20px; + top: 40px; +} + +#instance-field input { + width: 80px; +} + #stop-button { background-color: #CC1F00; right: 0px; diff --git a/domain-server/resources/web/assignment/index.shtml b/domain-server/resources/web/assignment/index.shtml index fe47b818ed..0bc0e67eef 100644 --- a/domain-server/resources/web/assignment/index.shtml +++ b/domain-server/resources/web/assignment/index.shtml @@ -14,6 +14,9 @@ Run +
+ +
diff --git a/domain-server/resources/web/assignment/js/assignment.js b/domain-server/resources/web/assignment/js/assignment.js index 630acd4847..a34f539961 100644 --- a/domain-server/resources/web/assignment/js/assignment.js +++ b/domain-server/resources/web/assignment/js/assignment.js @@ -20,6 +20,11 @@ $(document).ready(function(){ // add the script + script + '\r\n' + '--' + boundary + '--'; + + var headers = {}; + if ($('#instance-field input').val()) { + headers['ASSIGNMENT-INSTANCES'] = $('#instance-field input').val(); + } // post form to assignment in order to create an assignment $.ajax({ @@ -27,6 +32,7 @@ $(document).ready(function(){ data: body, type: "POST", url: "/assignment", + headers: headers, success: function (data, status) { console.log(data); console.log(status); diff --git a/domain-server/src/main.cpp b/domain-server/src/main.cpp index 0d76482808..b4b5c0ec36 100644 --- a/domain-server/src/main.cpp +++ b/domain-server/src/main.cpp @@ -313,17 +313,18 @@ int main(int argc, const char* argv[]) { broadcastPacket, numHeaderBytes + numAssignmentBytes); - // remove the assignment from the queue - ::assignmentQueue.erase(assignment); - if ((*assignment)->getType() == Assignment::AgentType) { // if this is a script assignment we need to delete it to avoid a memory leak // or if there is more than one instance to send out, simpy decrease the number of instances if ((*assignment)->getNumberOfInstances() > 1) { (*assignment)->decrementNumberOfInstances(); } else { + ::assignmentQueue.erase(assignment); delete *assignment; } + } else { + // remove the assignment from the queue + ::assignmentQueue.erase(assignment); } // stop looping, we've handed out an assignment @@ -351,12 +352,18 @@ int main(int argc, const char* argv[]) { nodeList->sendAssignment(*(*assignment)); - // remove the assignment from the queue - ::assignmentQueue.erase(assignment); - if ((*assignment)->getType() == Assignment::AgentType) { // if this is a script assignment we need to delete it to avoid a memory leak - delete *assignment; + // or if there is more than one instance to send out, simpy decrease the number of instances + if ((*assignment)->getNumberOfInstances() > 1) { + (*assignment)->decrementNumberOfInstances(); + } else { + ::assignmentQueue.erase(assignment); + delete *assignment; + } + } else { + // remove the assignment from the queue + ::assignmentQueue.erase(assignment); } // stop looping, we've handed out an assignment diff --git a/libraries/shared/src/Assignment.cpp b/libraries/shared/src/Assignment.cpp index 8f6d20db9e..d794495c29 100644 --- a/libraries/shared/src/Assignment.cpp +++ b/libraries/shared/src/Assignment.cpp @@ -21,7 +21,8 @@ Assignment::Assignment(Assignment::Command command, Assignment::Type type, Assig _type(type), _location(location), _attachedPublicSocket(NULL), - _attachedLocalSocket(NULL) + _attachedLocalSocket(NULL), + _numberOfInstances(1) { // set the create time on this assignment gettimeofday(&_time, NULL); @@ -35,7 +36,8 @@ Assignment::Assignment(Assignment::Command command, Assignment::Type type, Assig Assignment::Assignment(const unsigned char* dataBuffer, int numBytes) : _location(GlobalLocation), _attachedPublicSocket(NULL), - _attachedLocalSocket(NULL) + _attachedLocalSocket(NULL), + _numberOfInstances(1) { // set the create time on this assignment gettimeofday(&_time, NULL);