예제 #1
0
파일: vice.py 프로젝트: StyXman/Trieste
  def init (self, net=None, url=None):
    Master.init (self)

    if net:
      peer= None
      finished= self._terminate
      while not finished:
        peer= self.discover (net)
        finished= self._terminate or peer

      if peer:
        self.gossip (peer)
        self.propalate ()
        return True
      else:
        return False

    if url:
      key= self.getNavelKey (url)
      peer= self._peers.getNavel (url, key)
      self.gossip (peer)
      self.propalate ()
      return True

    return False
예제 #2
0
    def init(self, net=None, url=None):
        Master.init(self)

        if net:
            peer = None
            finished = self._terminate
            while not finished:
                peer = self.discover(net)
                finished = self._terminate or peer

            if peer:
                self.gossip(peer)
                self.propalate()
                return True
            else:
                return False

        if url:
            key = self.getNavelKey(url)
            peer = self._peers.getNavel(url, key)
            self.gossip(peer)
            self.propalate()
            return True

        return False
예제 #3
0
 def periodic(self):
     # this one should shout its keys
     Master.periodic(self)
     if not self._terminate:
         # can't do it otherwise
         # self.sync ()
         pass
     else:
         self.debug(1, 'you might be pregnant...')
예제 #4
0
파일: vice.py 프로젝트: StyXman/Trieste
 def periodic (self):
   # this one should shout its keys
   Master.periodic (self)
   if not self._terminate:
     # can't do it otherwise
     # self.sync ()
     pass
   else:
     self.debug (1, 'you might be pregnant...')
예제 #5
0
    def __init__(self, url, column=0, path='data', space=None, fileName=None):
        Master.__init__(self, None, url, column, fileName=fileName)
        self._data = ViceData(self, "%s/data" % (path))
        self._handles = {}
        self._serverType = ViceServer
        self._size = space

        # stat
        self.blocks = None
        self.fblocks = None
        self.ufiles = None

        self.initStat()
        self.setUrl(url)
예제 #6
0
파일: vice.py 프로젝트: StyXman/Trieste
  def __init__ (self, url, column=0, path='data', space=None, fileName=None):
    Master.__init__ (self, None, url, column, fileName=fileName)
    self._data= ViceData (self, "%s/data" % (path))
    self._handles= {}
    self._serverType= ViceServer
    self._size= space

    # stat
    self.blocks= None
    self.fblocks= None
    self.ufiles= None

    self.initStat ()
    self.setUrl (url)
예제 #7
0
  def __init__ (self, url=None, net=None, fileName=None):
    # Fuse.__init__ (self)
    Master.__init__ (self, fileName=fileName)
    self.debug (1, 'v: logging in %s' % fileName)
    self.inodes= {}
    self.policy= policies.WeightedUniform ()

    navel= None
    if url:
      key= self.getNavelKey (url)
      navel= self._peers.getNavel (url, key)
    else:
      while not navel:
        navel= self.discover (net)
    self.gossip (navel)
예제 #8
0
  def periodic (self):
    self.debug (1, 'periodic')
    Master.periodic (self)
    if not self._terminate:
      # we migh been asked to finish right now.
      self.stabilize ()

      if random (10)==1:
        peer= self._peers.getRandomNavel ()
        # don't gossip w/ myself!
        if not peer==self._self:
          self.gossip (peer)

      self.debug (1, "%s <-- %d --> %s" % (self._pred and self._pred.key () or None, self.key (), self._succ and self._succ.key () or None))
    else:
      self.debug (1, 'you might be pregnant...')
예제 #9
0
  def init (self, net=None):
    Master.init (self)
    self._data= UmbData (self._key, self._key)
    self._self= self._peers.getNavel (self._url, self._key, Normal)

    if net:
      # create a challenger for new nodes and such
      self._chal= Challenger (self)
      self._chal.start ()

      # find a ring and join it or create a new one
      self.debug (1, 'ping')
      peer= self.discover (net, self._self)
      if peer==None:
        self.debug (1, "gave up! noone's here!")
        self.createRing ()
      else:
        self.join (peer)
예제 #10
0
  def __init__ (self, url=None, column=0, fileName=None):
    # take care of repeated keys!
    key= random (maxIno)
    Master.__init__ (self, url, key, column, fileName=fileName)
    self._succ= None
    self._pred= None

    # thread support
    # RLock's; just in case
    self._succLock= RLock ()
    self._predLock= RLock ()

    self._serverType= NavelServer
    self._chal= None

    self._self= None
    self._prevSucc= None
    self._prevPred= None
예제 #11
0
 def stop(self):
     self.sync()
     Master.stop(self)
예제 #12
0
파일: vice.py 프로젝트: StyXman/Trieste
 def stop (self):
   self.sync ()
   Master.stop (self)
예제 #13
0
 def stop (self):
   self.debug (1, "join'ing challenger...")
   self._chal.join ()
   Master.stop (self)