| 208 | |
| 209 | |
| 210 | class LegacyRemoteRepository: |
| 211 | extra_test_args = [] # type: ignore |
| 212 | |
| 213 | class RPCError(Exception): |
| 214 | def __init__(self, unpacked): |
| 215 | # unpacked has keys: 'exception_args', 'exception_full', 'exception_short', 'sysinfo' |
| 216 | self.unpacked = unpacked |
| 217 | |
| 218 | def get_message(self): |
| 219 | return "\n".join(self.unpacked["exception_short"]) |
| 220 | |
| 221 | @property |
| 222 | def traceback(self): |
| 223 | return self.unpacked.get("exception_trace", True) |
| 224 | |
| 225 | @property |
| 226 | def exception_class(self): |
| 227 | return self.unpacked["exception_class"] |
| 228 | |
| 229 | @property |
| 230 | def exception_full(self): |
| 231 | return "\n".join(self.unpacked["exception_full"]) |
| 232 | |
| 233 | @property |
| 234 | def sysinfo(self): |
| 235 | return self.unpacked["sysinfo"] |
| 236 | |
| 237 | class RPCServerOutdated(Error): |
| 238 | """Borg server is too old for {}. Required version {}""" |
| 239 | |
| 240 | exit_mcode = 84 |
| 241 | |
| 242 | @property |
| 243 | def method(self): |
| 244 | return self.args[0] |
| 245 | |
| 246 | @property |
| 247 | def required_version(self): |
| 248 | return self.args[1] |
| 249 | |
| 250 | def __init__(self, location, create=False, exclusive=False, lock_wait=None, lock=True, args=None): |
| 251 | self.location = self._location = location |
| 252 | self.preload_ids = [] |
| 253 | self.msgid = 0 |
| 254 | self.rx_bytes = 0 |
| 255 | self.tx_bytes = 0 |
| 256 | self.to_send = EfficientCollectionQueue(1024 * 1024, bytes) |
| 257 | self.stdin_fd = self.stdout_fd = self.stderr_fd = None |
| 258 | self.stderr_received = b"" # incomplete stderr line bytes received (no \n yet) |
| 259 | self.chunkid_to_msgids = {} |
| 260 | self.ignore_responses = set() |
| 261 | self.responses = {} |
| 262 | self.async_responses = {} |
| 263 | self.shutdown_time = None |
| 264 | self.ratelimit = SleepingBandwidthLimiter(args.upload_ratelimit * 1024 if args and args.upload_ratelimit else 0) |
| 265 | self.upload_buffer_size_limit = args.upload_buffer * 1024 * 1024 if args and args.upload_buffer else 0 |
| 266 | self.unpacker = get_limited_unpacker("client") |
| 267 | self.server_version = None # we update this after server sends its version |
no outgoing calls