def writeSomeDatas(self, data): try: return writev(self, data) except (OSError, IOError), io: if io.errno in (errno.EAGAIN, errno.EINTR): return 0 return CONNECTION_LOST
def send_notice(self, code, msg): if msg is None: msg = '' elif not isinstance(msg, str): msg = msg.pack() f = fuse_out_header(unique = 0, error = code, len = self.__out_header_size + len(msg)) if msg: data = (f.pack(), msg) else: data = (f.pack(),) try: #self.transport.write(data) l = writev(self.transport.fileno(),data) if l != len(data): raise RuntimeError("could not write notification to FUSE socket") except Exception as e: print_exc(file=sys.stderr) self.connectionLost(e)
def send_reply(self, req, reply=None, err=0): assert 0 <= err < 1000 if reply is None: reply = '' elif isinstance(reply, unicode): reply = reply.encode("utf-8") elif not isinstance(reply, str): reply = reply.pack() f = fuse_out_header(unique = req.unique, error = -err, len = self.__out_header_size + len(reply)) name = fuse_opcode2name[req.opcode][0] if err: self.log('%s(%d) >> %s', name, req.unique, errorcode[err]) elif reply and len(reply) < 100: self.log('%s(%d) >> %s', name, req.unique, repr(reply)) elif reply: self.log('%s(%d) >> (%d)', name, req.unique, len(reply)) else: self.log('%s(%d) >> -', name, req.unique) if reply: data = (f.pack(), reply) else: data = (f.pack(),) try: #self.transport.write(data) l = writev(self.transport.fileno(),data) ls = 0 for d in data: ls += len(d) if l != ls: raise RuntimeError("could not write to FUSE socket: %d != %d" % (l,ls)) except Exception as e: print_exc(file=sys.stderr) self.connectionLost(e)