Пример #1
0
    def _verify_all_shares(self, servermap):
        # read every byte of each share
        #
        # This logic is going to be very nearly the same as the
        # downloader. I bet we could pass the downloader a flag that
        # makes it do this, and piggyback onto that instead of
        # duplicating a bunch of code.
        #
        # Like:
        #  r = Retrieve(blah, blah, blah, verify=True)
        #  d = r.download()
        #  (wait, wait, wait, d.callback)
        #
        #  Then, when it has finished, we can check the servermap (which
        #  we provided to Retrieve) to figure out which shares are bad,
        #  since the Retrieve process will have updated the servermap as
        #  it went along.
        #
        #  By passing the verify=True flag to the constructor, we are
        #  telling the downloader a few things.
        #
        #  1. It needs to download all N shares, not just K shares.
        #  2. It doesn't need to decrypt or decode the shares, only
        #     verify them.
        if not self.best_version:
            return

        r = Retrieve(self._node, self._storage_broker, servermap,
                     self.best_version, verify=True)
        d = r.download()
        d.addCallback(self._process_bad_shares)
        return d
Пример #2
0
 def do_download(self, servermap, version=None):
     if version is None:
         version = servermap.best_recoverable_version()
     r = Retrieve(self._fn, self._storage_broker, servermap, version)
     c = consumer.MemoryConsumer()
     d = r.download(consumer=c)
     d.addCallback(lambda mc: "".join(mc.chunks))
     return d
Пример #3
0
 def _do_retrieve(servermap):
     self.failUnless(servermap.get_problems())
     self.failUnless("pubkey doesn't match fingerprint" in str(
         servermap.get_problems()[0]))
     ver = servermap.best_recoverable_version()
     r = Retrieve(self._fn, self._storage_broker, servermap, ver)
     c = consumer.MemoryConsumer()
     return r.download(c)
Пример #4
0
 def _try_once_to_download_version(self, servermap, version,
                                   fetch_privkey=False):
     r = Retrieve(self, servermap, version, fetch_privkey)
     if self._history:
         self._history.notify_retrieve(r.get_status())
     d = r.download()
     d.addCallback(self._downloaded_version)
     return d
Пример #5
0
 def do_download(self, servermap, version=None):
     if version is None:
         version = servermap.best_recoverable_version()
     r = Retrieve(self._fn, self._storage_broker, servermap, version)
     c = consumer.MemoryConsumer()
     d = r.download(consumer=c)
     d.addCallback(lambda mc: "".join(mc.chunks))
     return d
Пример #6
0
 def _do_retrieve(servermap):
     self.failUnless(servermap.get_problems())
     self.failUnless("pubkey doesn't match fingerprint"
                     in str(servermap.get_problems()[0]))
     ver = servermap.best_recoverable_version()
     r = Retrieve(self._fn, self._storage_broker, servermap, ver)
     c = consumer.MemoryConsumer()
     return r.download(c)
Пример #7
0
 def _read(self, consumer, offset=0, size=None, fetch_privkey=False):
     """
     I am the serialized companion of read.
     """
     r = Retrieve(self._node, self._storage_broker, self._servermap,
                  self._version, fetch_privkey)
     if self._history:
         self._history.notify_retrieve(r.get_status())
     d = r.download(consumer, offset, size)
     return d
Пример #8
0
 def _try_once_to_download_version(self,
                                   servermap,
                                   version,
                                   fetch_privkey=False):
     r = Retrieve(self, servermap, version, fetch_privkey)
     if self._history:
         self._history.notify_retrieve(r.get_status())
     d = r.download()
     d.addCallback(self._downloaded_version)
     return d
Пример #9
0
 def _read(self, consumer, offset=0, size=None, fetch_privkey=False):
     """
     I am the serialized companion of read.
     """
     r = Retrieve(self._node, self._storage_broker, self._servermap,
                  self._version, fetch_privkey)
     if self._history:
         self._history.notify_retrieve(r.get_status())
     d = r.download(consumer, offset, size)
     return d