var 
  Parser = require("./protocol_parser").Parser,
  next_client_id = 0;

function Client(server, socket, callback) {
  this.parser = new Parser(this);
  this.socket = socket;
  this.server = server;
  this.requests = [];
  this.id = (next_client_id++).toString(36);
  this.prev_request_id = -1;

  our.redis.client.hincrby(our.metadata_key, 'client_count', 1, 
    function (err, reply) {
      if (err) throw new Error(err);
      our.client_count++;
    });
}

Client.prototype.respond = function (response) {
  var serialized = JSON.stringify({ id: this.requests[0].id, body: response }) + "\r\n";
  this.server.log("⇉ " + this + ": " + serialized.replace(/\r\n/g, '<crlf>'));
  this.server.write(this.socket, serialized);
};

Client.prototype.error = function (reason) {
  var serialized = JSON.stringify({ id: this.requests[0].id, error: reason }) + "\r\n";
  this.server.log("⇉ " + this + ": " + serialized.replace(/\r\n/g, '<crlf>'));
  this.server.write(this.socket, serialized);
};

Client.prototype.notify = function (notice, already_serialized) {
  var serialized = already_serialized ? notice : (JSON.stringify({ notice: notice }) + "\r\n");
  this.server.log("☞ " + this + ": " + serialized.replace(/\r\n/g, '<crlf>'));
  this.server.write(this.socket, serialized); 
};

Client.prototype.kill = function (reason) {
  this.error(reason);
  our.emitter.emit("killed", this, reason);
  this.socket.end();
};

Client.prototype.toString = function () {
  return this.id + '@' + our.node_name;
};

exports.Client = Client;


@@ -93,21 +93,22 @@
 server, 
-socke
+condui
 t, callb
@@ -159,22 +159,24 @@
 his.
-socket = socke
+conduit = condui
 t;%0A 
@@ -696,37 +696,38 @@
 rver.write(this.
-socke
+condui
 t, serialized);%0A
@@ -959,37 +959,38 @@
 rver.write(this.
-socke
+condui
 t, serialized);%0A
@@ -1259,21 +1259,22 @@
 te(this.
-socke
+condui
 t, seria
@@ -1407,13 +1407,14 @@
 his.
-socke
+condui
 t.en

Generalize the concept of the means to communicate with a 'client' as a 'conduit' (duck-typing anyway)