Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C747918166 for ; Mon, 29 Jun 2015 23:04:05 +0000 (UTC) Received: (qmail 36554 invoked by uid 500); 29 Jun 2015 23:04:05 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 36523 invoked by uid 500); 29 Jun 2015 23:04:05 -0000 Mailing-List: contact commits-help@ignite.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.incubator.apache.org Delivered-To: mailing list commits@ignite.incubator.apache.org Received: (qmail 36514 invoked by uid 99); 29 Jun 2015 23:04:05 -0000 Received: from Unknown (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Jun 2015 23:04:05 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id 4228FC1215 for ; Mon, 29 Jun 2015 23:04:05 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.791 X-Spam-Level: * X-Spam-Status: No, score=1.791 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id M1P89PtxWVHw for ; Mon, 29 Jun 2015 23:03:55 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with SMTP id 31615211EF for ; Mon, 29 Jun 2015 23:03:55 +0000 (UTC) Received: (qmail 34848 invoked by uid 99); 29 Jun 2015 23:02:40 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Jun 2015 23:02:40 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id F07AFE35EA; Mon, 29 Jun 2015 23:02:39 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: ivasilinets@apache.org To: commits@ignite.incubator.apache.org Message-Id: <24a49e22a0cf47de99e513ca31e0b2c7@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: incubator-ignite git commit: #ignite-964: introduce command object in server.js Date: Mon, 29 Jun 2015 23:02:39 +0000 (UTC) Repository: incubator-ignite Updated Branches: refs/heads/ignite-964-1 2c1ecf283 -> 874468768 #ignite-964: introduce command object in server.js Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/87446876 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/87446876 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/87446876 Branch: refs/heads/ignite-964-1 Commit: 8744687687f5994c1a881432a7c0600a6b7368c4 Parents: 2c1ecf2 Author: ivasilinets Authored: Tue Jun 30 02:02:44 2015 +0300 Committer: ivasilinets Committed: Tue Jun 30 02:02:44 2015 +0300 ---------------------------------------------------------------------- modules/nodejs/src/main/js/cache.js | 100 ++++++++--------------------- modules/nodejs/src/main/js/compute.js | 14 ++-- modules/nodejs/src/main/js/ignite.js | 7 +- modules/nodejs/src/main/js/server.js | 85 ++++++++++++++++-------- 4 files changed, 98 insertions(+), 108 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/87446876/modules/nodejs/src/main/js/cache.js ---------------------------------------------------------------------- diff --git a/modules/nodejs/src/main/js/cache.js b/modules/nodejs/src/main/js/cache.js index 9f72589..1ece92d 100644 --- a/modules/nodejs/src/main/js/cache.js +++ b/modules/nodejs/src/main/js/cache.js @@ -16,6 +16,7 @@ */ var Server = require("./server").Server; +var Command = require("./server").Command; var SqlFieldsQuery = require("./sql-fields-query").SqlFieldsQuery var SqlQuery = require("./sql-query").SqlQuery @@ -30,7 +31,6 @@ var SqlQuery = require("./sql-query").SqlQuery function Cache(server, cacheName) { this._server = server; this._cacheName = cacheName; - this._cacheNameParam = Server.pair("cacheName", this._cacheName); } /** @@ -41,7 +41,7 @@ function Cache(server, cacheName) { * @param {onGet} callback Called on finish */ Cache.prototype.get = function(key, callback) { - this._server.runCommand("get", [this._cacheNameParam, Server.pair("key", key)], callback); + this._server.runCommand(this._createCommand("get").addParam("key", key), callback); }; /** @@ -53,7 +53,7 @@ Cache.prototype.get = function(key, callback) { * @param {noValue} callback Called on finish */ Cache.prototype.put = function(key, value, callback) { - this._server.runCommand("put", [this._cacheNameParam, Server.pair("key", key), Server.pair("val", value)], + this._server.runCommand(this._createCommand("put").addParam("key", key).addParam("val", value), callback); } @@ -65,7 +65,7 @@ Cache.prototype.put = function(key, value, callback) { * @param {noValue} callback Called on finish */ Cache.prototype.remove = function(key, callback) { - this._server.runCommand("rmv", [this._cacheNameParam, Server.pair("key", key)], callback); + this._server.runCommand(this._createCommand("rmv").addParam("key", key), callback); } /** @@ -76,11 +76,7 @@ Cache.prototype.remove = function(key, callback) { * @param {noValue} callback Called on finish */ Cache.prototype.removeAll = function(keys, callback) { - var params = [this._cacheNameParam]; - - params = params.concat(Cache.concatParams("k", keys)); - - this._server.runCommand("rmvall", params, callback); + this._server.runCommand(this._createCommand("rmvall").addParams("k", keys), callback); } /** @@ -99,12 +95,7 @@ Cache.prototype.putAll = function(map, callback) { values.push(map[key]); } - var params = Cache.concatParams("k", keys); - params = params.concat(Cache.concatParams("v", values)); - - params.push(this._cacheNameParam); - - this._server.runCommand("putall", params, callback); + this._server.runCommand(this._createCommand("putall").addParams("k", keys).addParams("v", values), callback); } /** @@ -115,9 +106,7 @@ Cache.prototype.putAll = function(map, callback) { * @param {noValue} callback Called on finish */ Cache.prototype.postPutAll = function(map, callback) { - var params = [this._cacheNameParam]; - - this._server.runCommand("putall2", params, callback, JSON.stringify(map)); + this._server.runCommand(this._createCommand("putall2").setPostData(JSON.stringify(map)), callback); } /** @@ -136,11 +125,7 @@ Cache.prototype.postPutAll = function(map, callback) { * @param {Cache~onGetAll} callback Called on finish */ Cache.prototype.getAll = function(keys, callback) { - var params = Cache.concatParams("k", keys); - - params.push(this._cacheNameParam); - - this._server.runCommand("getall", params, callback); + this._server.runCommand(this._createCommand("getall").addParams("k", keys), callback); } /** @@ -167,11 +152,9 @@ Cache.prototype.query = function(qry) { qry.end(); } else { - this._server.runCommand("qryfetch", [ - Server.pair("cacheName", this._cacheName), - Server.pair("qryId", res.queryId), - Server.pair("psz", qry.pageSize())], - onQueryExecute.bind(this, qry)); + var command = this._createCommand("qryfetch"); + command.addParam("qryId", res.queryId).addParam("psz", qry.pageSize()); + this._server.runCommand(command, onQueryExecute.bind(this, qry)); } } @@ -184,63 +167,36 @@ Cache.prototype.query = function(qry) { } Cache.prototype._sqlFieldsQuery = function(qry, onQueryExecute) { - var params = [Server.pair("cacheName", this._cacheName), - Server.pair("qry", qry.query()), - Server.pair("psz", qry.pageSize())]; - - params = params.concat(this._sqlArguments(qry.arguments())); - - this._server.runCommand("qryfieldsexecute", params, - onQueryExecute.bind(this, qry)); -} - -Cache.prototype._sqlArguments = function(args) { - var res = []; - console.log("ARGS=" + args); - - for (var i = 1; i <= args.length; i++) { - res.push(Server.pair("arg" + i, args[i - 1])); - } + var command = this._createQueryCommand("qryfieldsexecute", qry); + command.addParams("arg", qry.arguments()); - return res; + this._server.runCommand(command, onQueryExecute.bind(this, qry)); } Cache.prototype._sqlQuery = function(qry, onQueryExecute) { - var params = [Server.pair("cacheName", this._cacheName), - Server.pair("qry", qry.query()), - Server.pair("psz", qry.pageSize())] - params = params.concat(this._sqlArguments(qry.arguments())); - - if (qry.returnType() != null) { - params.push(Server.pair("type", qry.returnType())); - } - else { + if (qry.returnType() == null) { qry.error("No type for sql query."); qry.end(); - return; } - this._server.runCommand("qryexecute", params, - onQueryExecute.bind(this, qry)); -} + var command = this._createQueryCommand("qryexecute", qry); + command.addParams("arg", qry.arguments()); + command.addParam("type", qry.returnType()); -/** - * Concatenate all parameters - * - * @param {string} pref Prefix - * @param {string[]} keys Keys - * @returns List of parameters. - */ -Cache.concatParams = function(pref, keys) { - var temp = [] + this._server.runCommand(command, onQueryExecute.bind(this, qry)); +} - for (var i = 1; i <= keys.length; ++i) { - temp.push(Server.pair(pref + i, keys[i-1])); - } +Cache.prototype._createCommand = function(name) { + var command = new Command(name); + return command.addParam("cacheName", this._cacheName); +} - return temp; +Cache.prototype._createQueryCommand = function(name, qry) { + var command = this._createCommand(name); + command.addParam("qry", qry.query()); + return command.addParam("psz", qry.pageSize()); } exports.Cache = Cache \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/87446876/modules/nodejs/src/main/js/compute.js ---------------------------------------------------------------------- diff --git a/modules/nodejs/src/main/js/compute.js b/modules/nodejs/src/main/js/compute.js index 5789528..830ba85 100644 --- a/modules/nodejs/src/main/js/compute.js +++ b/modules/nodejs/src/main/js/compute.js @@ -16,6 +16,7 @@ */ var Server = require("./server").Server; +var Command = require("./server").Command; /** * @constructor @@ -33,8 +34,7 @@ function Compute(server) { * @param {onGet} callback Callback */ Compute.prototype.runScript = function(runnable, args, callback) { - this._server.runCommand("runscript", [Server.pair("func", runnable), - Server.pair("arg", args)], callback); + this._server.runCommand(new Command("runscript").addParam("func", runnable).addParam("arg", args), callback); } /** @@ -45,13 +45,13 @@ Compute.prototype.runScript = function(runnable, args, callback) { * @param {onGet} callback Callback */ Compute.prototype.execute = function(map, reduce, arg, callback) { - var params = []; + var command = new Command("excmapreduce"); - params.push(Server.pair("map", map)); - params.push(Server.pair("reduce", reduce)); - params.push(Server.pair("arg", arg)); + command.addParam("map", map); + command.addParam("reduce", reduce); + command.addParam("arg", arg); - this._server.runCommand("excmapreduce", params, callback); + this._server.runCommand(command, callback); } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/87446876/modules/nodejs/src/main/js/ignite.js ---------------------------------------------------------------------- diff --git a/modules/nodejs/src/main/js/ignite.js b/modules/nodejs/src/main/js/ignite.js index d7203e4..dde259e 100644 --- a/modules/nodejs/src/main/js/ignite.js +++ b/modules/nodejs/src/main/js/ignite.js @@ -19,6 +19,7 @@ var Cache = require("./cache").Cache; var Compute = require("./compute").Compute; var ClusterNode = require("./cluster-node").ClusterNode; var Server = require("./server").Server; +var Command = require("./server").Command; /** * Create an instance of Ignite @@ -67,7 +68,7 @@ Ignite.prototype.compute = function() { * @param {onGet} callback Result in callback contains string with Ignite version. */ Ignite.prototype.version = function(callback) { - this._server.runCommand("version", [], callback); + this._server.runCommand(new Command("version"), callback); } /** @@ -77,7 +78,7 @@ Ignite.prototype.version = function(callback) { * @param {onGet} callback Result in callback contains string with Ignite name. */ Ignite.prototype.name = function(callback) { - this._server.runCommand("name", [], callback); + this._server.runCommand(new Command("name"), callback); } /** @@ -107,7 +108,7 @@ Ignite.prototype.cluster = function(callback) { callback.call(null, null, nodes); } - this._server.runCommand("top", [Server.pair("attr", "true"), Server.pair("mtr", "false")], + this._server.runCommand(new Command("top").addParam("attr", "true").addParam("mtr", "false"), onTop.bind(null, callback)); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/87446876/modules/nodejs/src/main/js/server.js ---------------------------------------------------------------------- diff --git a/modules/nodejs/src/main/js/server.js b/modules/nodejs/src/main/js/server.js index b3586e3..2714ae5 100644 --- a/modules/nodejs/src/main/js/server.js +++ b/modules/nodejs/src/main/js/server.js @@ -61,27 +61,23 @@ Server.prototype.host = function() { * @param params Parameters for command. * @param {onGet} Called on finish */ -Server.prototype.runCommand = function(cmdName, params, callback, postData) { - var paramsString = ""; - - for (var p of params) { - paramsString += "&" + p.key + "=" + p.value; - } +Server.prototype.runCommand = function(cmd, callback) { - var requestQry = "cmd=" + cmdName + paramsString; + var requestQry = "cmd=" + cmd.name() + cmd.paramsString(); var http = require('http'); var options = { host: this._host, port: this._port, - method : postData ? "POST" : "GET", + method : cmd._method(), path: "/ignite?" + requestQry, headers: this._signature() }; - if (postData) - options.headers['Content-Length'] = postData.length; + if (cmd._isPost()) { + options.headers['Content-Length'] = cmd.postData().length; + } function streamCallback(response) { var fullResponseString = ''; @@ -129,9 +125,9 @@ Server.prototype.runCommand = function(cmdName, params, callback, postData) { request.on('error', callback); - if (postData) - request.write(postData); - + if (cmd._isPost()) { + request.write(cmd.postData()); + } request.end(); } @@ -142,18 +138,7 @@ Server.prototype.runCommand = function(cmdName, params, callback, postData) { * @param {onGet} callback Called on finish */ Server.prototype.checkConnection = function(callback) { - this.runCommand("version", [], callback); -} - -/** - * Returns pair for runCommand - * - * @param {string} key Key - * @param {string} value Value - * @returns Pair of strings - */ -Server.pair = function(key, value) { - return {key: Server._escape(key), value: Server._escape(value)} + this.runCommand(new Command("version"), callback); } /** @@ -194,4 +179,52 @@ Server._escape = function(f) { return qs.escape(f.toString()); } -exports.Server = Server; \ No newline at end of file +function Command(name) { + this._name = name; + this._params = []; +} + +Command.prototype.addParam = function(key, value) { + this._params.push({key: key, value: value}); + return this; +} + +Command.prototype.addParams = function(prefix, params) { + for (var i = 1; i <= params.length; ++i) { + this.addParam(prefix + i, params[i - 1]); + } + return this; +} + +Command.prototype.setPostData = function(postData) { + this._postData = postData; + return this; +} + +Command.prototype.postData = function() { + return this._postData; +} + +Command.prototype._method = function() { + return this._isPost()? "POST" : "GET"; +} + +Command.prototype._isPost = function() { + return !!this._postData; +} + +Command.prototype.name = function() { + return this._name; +} + +Command.prototype.paramsString = function() { + var paramsString = ""; + + for (var p of this._params) { + paramsString += "&" + Server._escape(p.key) + "=" + Server._escape(p.value); + } + return paramsString; +} + +exports.Server = Server; +exports.Command = Command; \ No newline at end of file