From 33d245bd6710b7f7b368aec2d7545fe83ac9265e Mon Sep 17 00:00:00 2001 From: Alessandro Ambrosano <a.ambrosano@sssup.it> Date: Fri, 10 Apr 2015 12:14:37 +0200 Subject: [PATCH] [NRRPLT-1842][NRRLPT-1860] Added the possibility connect to a custom remote gzserver Change-Id: I3f174db3d8a7f76b8059173dfe4b3c4136fa15c1 --- .gitignore | 4 ++++ gzbridge/GZNode.cc | 31 +++++++++++++++++++++++++++++-- gzbridge/GZNode.hh | 4 ++++ gzbridge/ws_server.js | 17 +++++++++++++++-- start_gzweb.sh | 15 ++++++++++++++- 5 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..48a844a --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +build/ +gzbridge/build/ +http/ +node_modules/ diff --git a/gzbridge/GZNode.cc b/gzbridge/GZNode.cc index 43f7459..f2cd144 100644 --- a/gzbridge/GZNode.cc +++ b/gzbridge/GZNode.cc @@ -32,13 +32,37 @@ GZNode::GZNode() return; } + this->ConnectGzServer(); +}; + +GZNode::GZNode(const v8::Arguments& args) { + isGzServerConnected = false; + + if (args.Length() != 2) { + ThrowException(Exception::TypeError( + String::New("Wrong number of arguments"))); + return; + } + + v8::String::Utf8Value v8host(args[0]->ToString()); + std::string host = std::string(*v8host); + int port = args[1]->IntegerValue(); + + if (!gazebo::transport::init(host, port)) { + return; + } + + this->ConnectGzServer(); +}; + +void GZNode::ConnectGzServer() { isGzServerConnected = true; gazebo::transport::run(); this->gzIface = new GazeboInterface(); this->gzIface->Init(); this->gzIface->RunThread(); -}; +} ///////////////////////////////////////////////// GZNode::~GZNode() @@ -115,8 +139,11 @@ void GZNode::Init(Handle<Object> exports) Handle<Value> GZNode::New(const Arguments& args) { HandleScope scope; + GZNode* obj; + + if (args.Length() == 0) obj = new GZNode(); + else if (args.Length() == 2) obj = new GZNode(args); - GZNode* obj = new GZNode(); obj->Wrap(args.This()); return args.This(); diff --git a/gzbridge/GZNode.hh b/gzbridge/GZNode.hh index 5bcde2f..24944e0 100644 --- a/gzbridge/GZNode.hh +++ b/gzbridge/GZNode.hh @@ -32,6 +32,10 @@ namespace gzweb private: GZNode(); + private: GZNode(const v8::Arguments& args); + + private: void ConnectGzServer(); + private: ~GZNode(); private: static v8::Handle<v8::Value> New(const v8::Arguments& args); diff --git a/gzbridge/ws_server.js b/gzbridge/ws_server.js index 1315963..664aaab 100755 --- a/gzbridge/ws_server.js +++ b/gzbridge/ws_server.js @@ -1,12 +1,25 @@ #!/usr/bin/env node +if (process.argv.length != 2 && process.argv.length != 4) { + console.error('Server called with wrong parameters: usage ws_server [gzserver_host gzserver_port]') + process.exit(1); +} + var WebSocketServer = require('websocket').server; var http = require('http'); var connections = []; var materialScriptsMessage = {}; var addon = require('./build/Debug/gzbridge'); -var gzconnection = new addon.GZNode(); + +if (process.argv.length == 2) { + var gzconnection = new addon.GZNode(); +} +else { + // process.argv[2] is gzserver host, process.argv[3] is gzserver port. + var gzconnection = new addon.GZNode(process.argv[2], process.argv[3]); +} + if (gzconnection.getIsGzServerConnected()) { gzconnection.loadMaterialScripts('../http/client/assets'); @@ -19,7 +32,7 @@ if (gzconnection.getIsGzServerConnected()) gzconnection.getPoseMsgFilterMinimumAge()); console.log(' minimum XYZ distance squared between successive messages: ' + gzconnection.getPoseMsgFilterMinimumDistanceSquared()); - console.log(' minimum Quartenion distance squared between successive messages:' + console.log(' minimum Quaternion distance squared between successive messages:' + ' ' + gzconnection.getPoseMsgFilterMinimumQuaternionSquared()); } else diff --git a/start_gzweb.sh b/start_gzweb.sh index 589ca8a..3f8024d 100755 --- a/start_gzweb.sh +++ b/start_gzweb.sh @@ -1,5 +1,10 @@ #!/bin/bash +if [[ $# -ne 0 && $# -ne 2 ]]; then + echo "Usage: start_gzweb [gzsever_host gzserver_port]" + exit 1 +fi + ulimit -c unlimited DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -17,4 +22,12 @@ fi ./node_modules/.bin/http-server http/client & cd gzbridge -./ws_server.js & + +if [ $# -eq 0 ]; then + ./ws_server.js & +fi + +if [ $# -eq 2 ]; then + ./ws_server.js $1 $2 & +fi + -- GitLab