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; } connector.setIsBoundToY(); send_ = function(o) { if ((o.uid.creator === HB.getUserId()) && (typeof o.uid.op_number !== "string") && (o.uid.doSync === "true" || o.uid.doSync === true) && (HB.getUserId() !== "_temp")) { return connector.broadcast(o); } }; if (connector.invokeSync != null) { HB.setInvokeSyncHandler(connector.invokeSync); } execution_listener.push(send_); encode_state_vector = function(v) { var value, _results; _results = []; for (name in v) { value = v[name]; _results.push({ user: name, state: value }); } return _results; }; parse_state_vector = function(v) { var s, state_vector, _i, _len; 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; connector.receive_handlers = []; return connector.receive_handlers.push(function(sender, op) { if (op.uid.creator !== HB.getUserId()) { return engine.applyOp(op); } }); }; module.exports = adaptConnector;