// Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy of // the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. var sandbox = null; try { // if possible, use evalcx (not always available) sandbox = evalcx(''); sandbox.emit = emit; sandbox.sum = sum; sandbox.log = log; sandbox.toJSON = toJSON; sandbox.provides = provides; sandbox.registerType = registerType; sandbox.start = start; sandbox.send = send; sandbox.getRow = getRow; } catch (e) {} // Commands are in the form of json arrays: // ["commandname",..optional args...]\n // // Responses are json values followed by a new line ("\n") var line, cmd, cmdkey; var dispatch = { "reset" : State.reset, "add_fun" : State.addFun, "map_doc" : Views.mapDoc, "reduce" : Views.reduce, "rereduce" : Views.rereduce, "validate" : Validate.validate, "show" : Render.show, "list" : Render.list, "filter" : Filter.filter }; while (line = eval(readline())) { cmd = eval(line); line_length = line.length; try { cmdkey = cmd.shift(); if (dispatch[cmdkey]) { // run the correct responder with the cmd body dispatch[cmdkey].apply(this, cmd); } else { // unknown command, quit and hope the restarted version is better respond({ error: "query_server_error", reason: "unknown command '" + cmdkey + "'"}); quit(); } } catch(e) { respond(e); } };