var ConnectorClass, adaptConnector; ConnectorClass = require("./ConnectorClass"); adaptConnector = function(connector, engine, HB, execution_listener) { var applyHB, encode_state_vector, f, getHB, getStateVector, name, parse_state_vector, send_; for (name in ConnectorClass) { f = ConnectorClass[name]; connector[name] = f; } encode_state_vector = function(v) { var results, value; results = []; for (name in v) { value = v[name]; results.push({ user: name, state: value }); } return results; }; parse_state_vector = function(v) { var i, len, s, state_vector; state_vector = {}; for (i = 0, len = v.length; i < len; i++) { s = v[i]; state_vector[s.user] = s.state; } return state_vector; }; getStateVector = function() { return encode_state_vector(HB.getOperationCounter()); }; getHB = function(v) { var hb, json, state_vector; state_vector = parse_state_vector(v); hb = HB._encode(state_vector); json = { hb: hb, state_vector: encode_state_vector(HB.getOperationCounter()) }; return json; }; applyHB = function(hb, fromHB) { return engine.applyOp(hb, fromHB); }; connector.getStateVector = getStateVector; connector.getHB = getHB; connector.applyHB = applyHB; if (connector.receive_handlers == null) { connector.receive_handlers = []; } connector.receive_handlers.push(function(sender, op) { if (op.uid.creator !== HB.getUserId()) { return engine.applyOp(op); } }); connector.setIsBoundToY(); send_ = function(o) { if ((o.uid.creator === HB.getUserId()) && (typeof o.uid.op_number !== "string") && (HB.getUserId() !== "_temp")) { return connector.broadcast(o); } }; if (connector.invokeSync != null) { HB.setInvokeSyncHandler(connector.invokeSync); } return execution_listener.push(send_); }; module.exports = adaptConnector;