Factor out ocamlmsg.js

This commit is contained in:
Tony Garnock-Jones 2012-05-01 08:48:58 -04:00
parent bb12066819
commit b5dd7e445e
7 changed files with 132 additions and 118 deletions

View File

@ -10,7 +10,7 @@
}
</style>
<link rel="stylesheet" type="text/css" href="ui.css">
<script type="text/javascript" src="jquery-1.7.2.min.js"></script><script type="text/javascript" src="jquery.stream-1.2.js"></script><script type="text/javascript" src="ui_main.js"></script><!--[if lt IE 9]>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script><script type="text/javascript" src="jquery.stream-1.2.js"></script><script type="text/javascript" src="ocamlmsg.js"></script><!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]
-->

View File

@ -20,7 +20,10 @@
<link rel="stylesheet" type="text/css" href="ui.css" />
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jquery.stream-1.2.js"></script>
<script type="text/javascript" src="ui_main.js"></script>
<script type="text/javascript" src="ocamlmsg.js"></script>
<xsl:for-each select="load">
<script type="text/javascript" src="{text()}"></script>
</xsl:for-each>
<xsl:comment>[if lt IE 9]<xsl:text disable-output-escaping="yes">&gt;
&lt;script src="http://html5shim.googlecode.com/svn/trunk/html5.js"&gt;&lt;/script&gt;
&lt;!</xsl:text>[endif]

View File

@ -1,6 +1,10 @@
<page>
<title>Ocamlmsg</title>
<section>main</section>
<load>index.js</load>
<script>$(document).ready(ui_main);</script>
<body>
<h2>Server statistics</h2>
<table class="table">
@ -28,6 +32,4 @@
<h2>Debug</h2>
<pre id="debug_container"></pre>
</body>
<script>$(document).ready(ui_main);</script>
</page>

View File

@ -10,7 +10,7 @@
}
</style>
<link rel="stylesheet" type="text/css" href="ui.css">
<script type="text/javascript" src="jquery-1.7.2.min.js"></script><script type="text/javascript" src="jquery.stream-1.2.js"></script><script type="text/javascript" src="ui_main.js"></script><!--[if lt IE 9]>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script><script type="text/javascript" src="jquery.stream-1.2.js"></script><script type="text/javascript" src="ocamlmsg.js"></script><script type="text/javascript" src="index.js"></script><!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]
-->

46
web/index.js Normal file
View File

@ -0,0 +1,46 @@
function server_disconnected() {
$("#server_ok")[0].className = "btn-danger";
$("#server_ok").text("Disconnected");
$("#server_stats_connection_count").text("—");
$("#server_stats_boot_time").text("—");
$("#server_stats_uptime").text("—");
$("#server_classes").text("—");
}
function refresh_server_stats() {
$.getJSON("/_/server_stats", function (data) {
$("#server_ok")[0].className = "btn-success";
$("#server_ok").text("OK");
$("#server_stats_connection_count").text(data.connection_count);
$("#server_stats_boot_time").text(new Date(data.boot_time * 1000));
$("#server_stats_uptime").text(data.uptime);
$("#server_classes").text(data.classes.join(", "));
switch (Ocamlmsg.$tap.readyState) {
case 0: // connecting
case 1: // open
case 2: // closing
break;
case 3: // closed
Ocamlmsg.force_reinstall();
}
}).error(server_disconnected);
}
function ui_main() {
refresh_server_stats();
setInterval(refresh_server_stats, 5000);
Ocamlmsg.install_tap({
open: function (event, stream) {
refresh_server_stats();
Ocamlmsg.post(stream.id, {"test":true});
Ocamlmsg.create("fanout", ["system.log"], "completion1");
Ocamlmsg.subscribe("meta", "system.log", "sub_messages", "completion2");
Ocamlmsg.subscribe("system.log", "", "log_messages", "completion3");
},
message: function (event, stream) {
$("#debug_container").append(JSON.stringify(event.data) + "\n");
},
close: server_disconnected
});
}

76
web/ocamlmsg.js Normal file
View File

@ -0,0 +1,76 @@
var Ocamlmsg = {
$tap: null,
$args: null,
_send: function (msg) {
Ocamlmsg.$tap.send({data: JSON.stringify(msg)});
},
_post_msg: function (target, datum, token) {
return ["post", target, datum, token || ""];
},
post: function (target, datum, token) {
Ocamlmsg._send(Ocamlmsg._post_msg(target, datum, token));
},
_subscribe_msg: function (filter, sink, name, reply_sink, reply_name) {
return ["subscribe", filter, sink, name, reply_sink || "", reply_name || ""];
},
_subscribe: function (source, filter, name, reply_name) {
return Ocamlmsg._post_msg(source,
Ocamlmsg._subscribe_msg(filter, Ocamlmsg.$tap.id, name,
reply_name ? Ocamlmsg.$tap.id : "",
reply_name));
},
subscribe: function (source, filter, name, reply_name) {
Ocamlmsg._send(Ocamlmsg._subscribe(source, filter, name, reply_name));
},
_unsubscribe_msg: function (token) {
return ["unsubscribe", token];
},
_unsubscribe: function (source, token) {
return Ocamlmsg._post_msg(source, Ocamlmsg._unsubscribe_msg(token));
},
unsubscribe: function (source, token) {
Ocamlmsg._send(Ocamlmsg._unsubscribe(source, token));
},
_create_msg: function (classname, arg, reply_sink, reply_name) {
return ["create", classname, arg, reply_sink || "", reply_name || ""];
},
_create: function (classname, arg, reply_name, factory) {
return Ocamlmsg._post_msg(factory || "factory",
Ocamlmsg._create_msg(classname, arg,
reply_name ? Ocamlmsg.$tap.id : "",
reply_name));
},
create: function (classname, arg, reply_name, factory) {
Ocamlmsg._send(Ocamlmsg._create(classname, arg, reply_name, factory));
},
install_tap: function (args) {
Ocamlmsg.$args = args;
Ocamlmsg.$tap = $.stream("/_/tap", {
type: "http",
dataType: "json",
enableXDR: true,
open: args.open,
message: args.message,
error: args.close,
close: args.close
});
},
force_reinstall: function () {
Ocamlmsg.install_tap(Ocamlmsg.$args);
}
}

View File

@ -1,113 +0,0 @@
var $tap;
function server_disconnected() {
$("#server_ok")[0].className = "btn-danger";
$("#server_ok").text("Disconnected");
$("#server_stats_connection_count").text("—");
$("#server_stats_boot_time").text("—");
$("#server_stats_uptime").text("—");
$("#server_classes").text("—");
}
function refresh_server_stats() {
$.getJSON("/_/server_stats", function (data) {
$("#server_ok")[0].className = "btn-success";
$("#server_ok").text("OK");
$("#server_stats_connection_count").text(data.connection_count);
$("#server_stats_boot_time").text(new Date(data.boot_time * 1000));
$("#server_stats_uptime").text(data.uptime);
$("#server_classes").text(data.classes.join(", "));
switch ($tap.readyState) {
case 0: // connecting
case 1: // open
case 2: // closing
break;
case 3: // closed
reset_tap_stream();
}
}).error(server_disconnected);
}
var Ocamlmsg = {
_send: function (msg) {
$tap.send({data: JSON.stringify(msg)});
},
_post_msg: function (target, datum, token) {
return ["post", target, datum, token || ""];
},
post: function (target, datum, token) {
Ocamlmsg._send(Ocamlmsg._post_msg(target, datum, token));
},
_subscribe_msg: function (filter, sink, name, reply_sink, reply_name) {
return ["subscribe", filter, sink, name, reply_sink || "", reply_name || ""];
},
_subscribe: function (source, filter, name, reply_name) {
return Ocamlmsg._post_msg(source,
Ocamlmsg._subscribe_msg(filter, $tap.id, name,
reply_name ? $tap.id : "",
reply_name));
},
subscribe: function (source, filter, name, reply_name) {
Ocamlmsg._send(Ocamlmsg._subscribe(source, filter, name, reply_name));
},
_unsubscribe_msg: function (token) {
return ["unsubscribe", token];
},
_unsubscribe: function (source, token) {
return Ocamlmsg._post_msg(source, Ocamlmsg._unsubscribe_msg(token));
},
unsubscribe: function (source, token) {
Ocamlmsg._send(Ocamlmsg._unsubscribe(source, token));
},
_create_msg: function (classname, arg, reply_sink, reply_name) {
return ["create", classname, arg, reply_sink || "", reply_name || ""];
},
_create: function (classname, arg, reply_name, factory) {
return Ocamlmsg._post_msg(factory || "factory",
Ocamlmsg._create_msg(classname, arg,
reply_name ? $tap.id : "",
reply_name));
},
create: function (classname, arg, reply_name, factory) {
Ocamlmsg._send(Ocamlmsg._create(classname, arg, reply_name, factory));
}
};
function reset_tap_stream() {
$tap = $.stream("/_/tap", {
type: "http",
dataType: "json",
open: function (event, stream) {
refresh_server_stats();
Ocamlmsg.post(stream.id, {"test":true});
Ocamlmsg.create("fanout", ["system.log"], "completion1");
Ocamlmsg.subscribe("meta", "system.log", "sub_messages", "completion2");
Ocamlmsg.subscribe("system.log", "", "log_messages", "completion3");
},
message: function (event, stream) {
$("#debug_container").append(JSON.stringify(event.data) + "\n");
},
error: server_disconnected,
close: server_disconnected
});
}
function ui_main() {
refresh_server_stats();
setInterval(refresh_server_stats, 5000);
$.stream.setup({enableXDR: true});
reset_tap_stream();
}