'A proxy for SocketInfo.legacy_write that handles event publishing.'

def legacy_write(self, request_id, msg, max_doc_size, acknowledged, docs):

    if self.publish:
        duration = (datetime.datetime.now() - self.start_time)
        cmd = self._start(request_id, docs)
        start = datetime.datetime.now()
    try:
        result = self.sock_info.legacy_write(request_id, msg, max_doc_size, acknowledged)
        if self.publish:
            duration = ((datetime.datetime.now() - start) + duration)
            if (result is not None):
                reply = _convert_write_result(self.name, cmd, result)
            else:
                reply = {'ok': 1}
            self._succeed(request_id, reply, duration)
    except OperationFailure as exc:
        if self.publish:
            duration = ((datetime.datetime.now() - start) + duration)
            self._fail(request_id, _convert_write_result(self.name, cmd, exc.details), duration)
        raise
    finally:
        self.start_time = datetime.datetime.now()
    return result
