Show More
@@ -25,6 +25,9 | |||
|
25 | 25 | 'setumask' command |
|
26 | 26 | set umask |
|
27 | 27 | |
|
28 | 'validate' command | |
|
29 | reload the config and check if the server is up to date | |
|
30 | ||
|
28 | 31 | 'SIGHUP' signal |
|
29 | 32 | reload configuration files |
|
30 | 33 | |
@@ -341,6 +344,9 class chgcmdserver(commandserver.server) | |||
|
341 | 344 | self._oldios = [] # original (self.ch, ui.fp, fd) before "attachio" |
|
342 | 345 | self.hashstate = hashstate |
|
343 | 346 | self.baseaddress = baseaddress |
|
347 | if hashstate is not None: | |
|
348 | self.capabilities = self.capabilities.copy() | |
|
349 | self.capabilities['validate'] = chgcmdserver.validate | |
|
344 | 350 | |
|
345 | 351 | def cleanup(self): |
|
346 | 352 | # dispatch._runcatch() does not flush outputs if exception is not |
@@ -413,6 +419,31 class chgcmdserver(commandserver.server) | |||
|
413 | 419 | setattr(ui, fn, fp) |
|
414 | 420 | del self._oldios[:] |
|
415 | 421 | |
|
422 | def validate(self): | |
|
423 | """Reload the config and check if the server is up to date | |
|
424 | ||
|
425 | Read a list of '\0' separated arguments. | |
|
426 | Write a non-empty list of '\0' separated instruction strings or '\0' | |
|
427 | if the list is empty. | |
|
428 | An instruction string could be either: | |
|
429 | - "unlink $path", the client should unlink the path to stop the | |
|
430 | outdated server. | |
|
431 | - "redirect $path", the client should try to connect to another | |
|
432 | server instead. | |
|
433 | """ | |
|
434 | args = self._readlist() | |
|
435 | self.ui = _renewui(self.ui, args) | |
|
436 | newhash = hashstate.fromui(self.ui, self.hashstate.mtimepaths) | |
|
437 | insts = [] | |
|
438 | if newhash.mtimehash != self.hashstate.mtimehash: | |
|
439 | addr = _hashaddress(self.baseaddress, self.hashstate.confighash) | |
|
440 | insts.append('unlink %s' % addr) | |
|
441 | if newhash.confighash != self.hashstate.confighash: | |
|
442 | addr = _hashaddress(self.baseaddress, newhash.confighash) | |
|
443 | insts.append('redirect %s' % addr) | |
|
444 | _log('validate: %s\n' % insts) | |
|
445 | self.cresult.write('\0'.join(insts) or '\0') | |
|
446 | ||
|
416 | 447 | def chdir(self): |
|
417 | 448 | """Change current directory |
|
418 | 449 |
General Comments 0
You need to be logged in to leave comments.
Login now