wirestore.py
37 lines
| 1.1 KiB
| text/x-python
|
PythonLexer
various
|
r15168 | # Copyright 2010-2011 Fog Creek Software | ||
# | ||||
# This software may be used and distributed according to the terms of the | ||||
# GNU General Public License version 2 or any later version. | ||||
Greg Ward
|
r15252 | '''largefile store working over Mercurial's wire protocol''' | ||
various
|
r15168 | |||
import lfutil | ||||
import remotestore | ||||
class wirestore(remotestore.remotestore): | ||||
def __init__(self, ui, repo, remote): | ||||
cap = remote.capable('largefiles') | ||||
if not cap: | ||||
raise lfutil.storeprotonotcapable([]) | ||||
storetypes = cap.split(',') | ||||
Brodie Rao
|
r16686 | if 'serve' not in storetypes: | ||
various
|
r15168 | raise lfutil.storeprotonotcapable(storetypes) | ||
self.remote = remote | ||||
super(wirestore, self).__init__(ui, repo, remote.url()) | ||||
def _put(self, hash, fd): | ||||
return self.remote.putlfile(hash, fd) | ||||
def _get(self, hash): | ||||
return self.remote.getlfile(hash) | ||||
Na'Tosha Bard
|
r17127 | def _stat(self, hashes): | ||
batch = self.remote.batch() | ||||
futures = {} | ||||
for hash in hashes: | ||||
futures[hash] = batch.statlfile(hash) | ||||
batch.submit() | ||||
retval = {} | ||||
for hash in hashes: | ||||
retval[hash] = not futures[hash].value | ||||
return retval | ||||