RTCBot is a framework that allows to write tests where logic runs on a single
host that controls multiple endpoints ("bots"). Thus allowing to create more
complex scenarios that would otherwise require non-trival signalling between
multiple parties.
R=houssainy@google.com, phoglund@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/22239004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7021 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/tools/rtcbot/bot/browser/api.js b/webrtc/tools/rtcbot/bot/browser/api.js
new file mode 100644
index 0000000..b51d49d
--- /dev/null
+++ b/webrtc/tools/rtcbot/bot/browser/api.js
@@ -0,0 +1,37 @@
+// Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
+//
+// Use of this source code is governed by a BSD-style license
+// that can be found in the LICENSE file in the root of the source
+// tree. An additional intellectual property rights grant can be found
+// in the file PATENTS. All contributing project authors may
+// be found in the AUTHORS file in the root of the source tree.
+//
+// This file exposes the api for the bot to connect to the host script
+// waiting a websocket connection and using dnode for javascript rpc.
+//
+// This file is served to the browser via browserify to resolve the
+// dnode requires.
+var WebSocketStream = require('websocket-stream');
+var Dnode = require('dnode');
+
+function connectToServer(api) {
+ var stream = new WebSocketStream("ws://127.0.0.1:8080/");
+ var dnode = new Dnode(api);
+ dnode.on('error', function (error) { console.log(error); });
+ dnode.pipe(stream).pipe(dnode);
+}
+
+// Dnode loses certain method calls when exposing native browser objects such as
+// peer connections. This methods helps work around that by allowing one to
+// redefine a non-native method in a target "obj" from "src" that applies a list
+// of casts to the arguments (types are lost in dnode).
+function expose(obj, src, method, casts) {
+ obj[method] = function () {
+ for (index in casts)
+ arguments[index] = new (casts[index])(arguments[index]);
+ src[method].apply(src, arguments);
+ }
+}
+
+window.expose = expose;
+window.connectToServer = connectToServer;