home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1674 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  4.0 KB  |  113 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import struct
  5. import dns.exception as dns
  6. import dns.name as dns
  7. import dns.rdata as dns
  8.  
  9. def _write_string(file, s):
  10.     l = len(s)
  11.     byte = chr(l)
  12.     file.write(byte)
  13.     file.write(s)
  14.  
  15.  
  16. class NAPTR(dns.rdata.Rdata):
  17.     __slots__ = [
  18.         'order',
  19.         'preference',
  20.         'flags',
  21.         'service',
  22.         'regexp',
  23.         'replacement']
  24.     
  25.     def __init__(self, rdclass, rdtype, order, preference, flags, service, regexp, replacement):
  26.         super(NAPTR, self).__init__(rdclass, rdtype)
  27.         self.order = order
  28.         self.preference = preference
  29.         self.flags = flags
  30.         self.service = service
  31.         self.regexp = regexp
  32.         self.replacement = replacement
  33.  
  34.     
  35.     def to_text(self, origin = None, relativize = True, **kw):
  36.         replacement = self.replacement.choose_relativity(origin, relativize)
  37.         return '%d %d "%s" "%s" "%s" %s' % (self.order, self.preference, dns.rdata._escapify(self.flags), dns.rdata._escapify(self.service), dns.rdata._escapify(self.regexp), self.replacement)
  38.  
  39.     
  40.     def from_text(cls, rdclass, rdtype, tok, origin = None, relativize = True):
  41.         order = tok.get_uint16()
  42.         preference = tok.get_uint16()
  43.         flags = tok.get_string()
  44.         service = tok.get_string()
  45.         regexp = tok.get_string()
  46.         replacement = tok.get_name()
  47.         replacement = replacement.choose_relativity(origin, relativize)
  48.         tok.get_eol()
  49.         return cls(rdclass, rdtype, order, preference, flags, service, regexp, replacement)
  50.  
  51.     from_text = classmethod(from_text)
  52.     
  53.     def to_wire(self, file, compress = None, origin = None):
  54.         two_ints = struct.pack('!HH', self.order, self.preference)
  55.         file.write(two_ints)
  56.         _write_string(file, self.flags)
  57.         _write_string(file, self.service)
  58.         _write_string(file, self.regexp)
  59.         self.replacement.to_wire(file, compress, origin)
  60.  
  61.     
  62.     def from_wire(cls, rdclass, rdtype, wire, current, rdlen, origin = None):
  63.         (order, preference) = struct.unpack('!HH', wire[current:current + 4])
  64.         current += 4
  65.         rdlen -= 4
  66.         strings = []
  67.         for i in xrange(3):
  68.             l = ord(wire[current])
  69.             current += 1
  70.             rdlen -= 1
  71.             if l > rdlen or rdlen < 0:
  72.                 raise dns.exception.FormError
  73.             rdlen < 0
  74.             s = wire[current:current + l]
  75.             current += l
  76.             rdlen -= l
  77.             strings.append(s)
  78.         
  79.         (replacement, cused) = dns.name.from_wire(wire[:current + rdlen], current)
  80.         if cused != rdlen:
  81.             raise dns.exception.FormError
  82.         cused != rdlen
  83.         if origin is not None:
  84.             replacement = replacement.relativize(origin)
  85.         
  86.         return cls(rdclass, rdtype, order, preference, strings[0], strings[1], strings[2], replacement)
  87.  
  88.     from_wire = classmethod(from_wire)
  89.     
  90.     def choose_relativity(self, origin = None, relativize = True):
  91.         self.replacement = self.replacement.choose_relativity(origin, relativize)
  92.  
  93.     
  94.     def _cmp(self, other):
  95.         sp = struct.pack('!HH', self.order, self.preference)
  96.         op = struct.pack('!HH', other.order, other.preference)
  97.         v = cmp(sp, op)
  98.         if v == 0:
  99.             v = cmp(self.flags, other.flags)
  100.             if v == 0:
  101.                 v = cmp(self.service, other.service)
  102.                 if v == 0:
  103.                     v = cmp(self.regexp, other.regexp)
  104.                     if v == 0:
  105.                         v = cmp(self.replacement, other.replacement)
  106.                     
  107.                 
  108.             
  109.         
  110.         return v
  111.  
  112.  
  113.