]> git.wh0rd.org - chrome-ext/music-player-client.git/blobdiff - js/mpc.js
compile javascript files with the closure compiler
[chrome-ext/music-player-client.git] / js / mpc.js
index 7093ed38bd8c8f3df2758286263919aa05b7afe8..c12a7482afbd85556a82d650ad29c5179ece1168 100644 (file)
--- a/js/mpc.js
+++ b/js/mpc.js
@@ -1,26 +1,33 @@
 // Written by Mike Frysinger <vapier@gmail.com>.  Released into the public domain.  Suck it.
 
-function Mpc(socket, cb_update_state) {
+function Mpc(socket, cb_update_state, debug_enabled) {
        this._socket = socket;
        this._cb_update_state = cb_update_state;
+       this._debug_enabled = debug_enabled;
        this._queue = ['init'];
        this.state = {};
 }
 
-Mpc.log = function(msg, obj) {
-       console.log('mpc: ' + msg, obj);
+Mpc.prototype.log = function(msg, obj) {
+       if (this._debug_enabled)
+               console.log('mpc: ' + msg, obj);
+}
+
+Mpc.prototype.set_debug = function(val) {
+       this._debug_enabled = val;
 }
 
 Mpc.prototype.send = function(msg) {
+       var _this = this;
        this._queue.push(msg);
        this._socket.send(msg, function(x) {
-               Mpc.log('send: ' + msg + ':', x);
+               _this.log('send: ' + msg + ':', x);
        });
 }
 
 Mpc.prototype.recv_msg = function(lines) {
        curr = this._queue.shift();
-       Mpc.log('recv: [' + curr + ']:', lines.join('\n'));
+       this.log('recv: [' + curr + ']:', lines.join('\n'));
        curr = curr.split(' ');
 
        switch (curr[0]) {
@@ -72,7 +79,7 @@ Mpc.__make_send_void = function(cmd) {
 Mpc.__make_send_arg1 = function(cmd) {
        return function(a1) {
                if (a1 === undefined)
-                       Mpc.log(cmd + ': function requires one argument');
+                       this.log(cmd + ': function requires one argument');
                else
                        this.send(cmd + ' ' + a1);
        }
@@ -81,7 +88,7 @@ Mpc.__make_send_arg1 = function(cmd) {
 Mpc.__make_send_arg2 = function(cmd) {
        return function(a1, a2) {
                if (a1 === undefined || a2 === undefined)
-                       Mpc.log(cmd + ': function requires two arguments');
+                       this.log(cmd + ': function requires two arguments');
                else
                        this.send(cmd + ' ' + a1 + ' ' + a2);
        }
@@ -102,7 +109,7 @@ Mpc.__make_send_range = function(cmd, min, max, def) {
                if (arg >= min && arg <= max)
                        this.send(cmd + ' ' + arg);
                else
-                       Mpc.log(cmd + ': arg must be [' + min + ',' + max + '] but got "' + arg + '"');
+                       this.log(cmd + ': arg must be [' + min + ',' + max + '] but got "' + arg + '"');
        };
 }
 
@@ -185,3 +192,49 @@ Mpc.prototype.kill                = Mpc.__make_send_void('kill');
 Mpc.prototype.password            = Mpc.__make_send_arg1('password');
 // ping
 Mpc.prototype.ping                = Mpc.__make_send_void('ping');
+
+/*
+ * Audio output devices
+ * http://www.musicpd.org/doc/protocol/ch03s09.html
+ */
+
+// disableoutput {ID}
+Mpc.prototype.disableoutput       = Mpc.__make_send_arg1('disableoutput');
+// enableoutput {ID}
+Mpc.prototype.enableoutput        = Mpc.__make_send_arg1('enableoutput');
+// outputs
+Mpc.prototype.outputs             = Mpc.__make_send_void('outputs');
+
+/*
+ * Reflection
+ * http://www.musicpd.org/doc/protocol/ch03s10.html
+ */
+
+// config
+Mpc.prototype.config              = Mpc.__make_send_void('config');
+// commands
+Mpc.prototype.commands            = Mpc.__make_send_void('commands');
+// notcommands
+Mpc.prototype.notcommands         = Mpc.__make_send_void('notcommands');
+// tagtypes
+Mpc.prototype.tagtypes            = Mpc.__make_send_void('tagtypes');
+// urlhandlers
+Mpc.prototype.urlhandlers         = Mpc.__make_send_void('urlhandlers');
+// decoders
+Mpc.prototype.decoders            = Mpc.__make_send_void('decoders');
+
+/*
+ * Client to client
+ * http://www.musicpd.org/doc/protocol/ch03s11.html
+ */
+
+// subscribe {NAME}
+Mpc.prototype.subscribe           = Mpc.__make_send_arg1('subscribe');
+// unsubscribe {NAME}
+Mpc.prototype.unsubscribe         = Mpc.__make_send_arg1('unsubscribe');
+// channels
+Mpc.prototype.channels            = Mpc.__make_send_void('channels');
+// readmessages
+Mpc.prototype.readmessages        = Mpc.__make_send_void('readmessages');
+// sendmessage {CHANNEL} {TEXT}
+Mpc.prototype.sendmessage         = Mpc.__make_send_arg2('sendmessage');