def resolve(self, path, parent=None, want_meta=True, follow=False): self._require_command(b'resolve') self.check_busy() self._busy = b'resolve' conn = self.conn conn.write(b'resolve %d\n' % ((1 if want_meta else 0) | (2 if follow else 0) | (4 if parent else 0))) if parent: vfs.write_resolution(conn, parent) write_bvec(conn, path) success = ord(conn.read(1)) assert success in (0, 1) if success: result = vfs.read_resolution(conn) else: result = vfs.read_ioerror(conn) # FIXME: confusing not_ok = self.check_ok() if not_ok: raise not_ok self._not_busy() if isinstance(result, vfs.IOError): raise result return result
def resolve(self, path, parent=None, want_meta=True, follow=False): self._require_command('resolve') self.check_busy() self._busy = 'resolve' conn = self.conn conn.write('resolve %d\n' % ((1 if want_meta else 0) | (2 if follow else 0) | (4 if parent else 0))) if parent: vfs.write_resolution(conn, parent) write_bvec(conn, path) success = ord(conn.read(1)) assert success in (0, 1) if success: result = vfs.read_resolution(conn) else: result = vfs.read_ioerror(conn) # FIXME: confusing not_ok = self.check_ok() if not_ok: raise not_ok self._not_busy() if isinstance(result, vfs.IOError): raise result return result