示例#1
0
        def create_reader(bytes):
            b = Buffer(1024)
            for byte in bytes:
                b.write_byte(byte)
            b.flip()

            p = PacketReader(b)
            p.packet.position = b.position
            p.packet.limit = b.limit
            return p
示例#2
0
 def __init__(self):
     self.state = self.STATE_INIT
     self.buffer = Buffer(1024 * 16)
     self.socket = None
     self.reader = None
     self.writer = None
     self._time_command = False  #whether to keep timing stats on a cmd
     self._command_time = -1
     self._incommand = False
     self.current_resultset = None
示例#3
0
 def __init__(self, stream):
     buffer_size = stream._read_buffer_size
     if stream._reader is None:
         if stream._reader_pool.get(buffer_size, []):
             reader = stream._reader_pool[buffer_size].pop()
         else:
             reader = BufferedReader(None, Buffer(buffer_size))
     else:
         reader = stream._reader
     reader.stream = stream._stream
     self._reader = reader
     self._stream = stream
示例#4
0
 def __init__(self, stream):
     buffer_size = stream._write_buffer_size
     if stream._writer is None:
         if stream._writer_pool.get(buffer_size, []):
             writer = stream._writer_pool[buffer_size].pop()
         else:
             writer = BufferedWriter(None, Buffer(buffer_size))
     else:
         writer = stream._writer
     writer.stream = stream._stream
     self._writer = writer
     self._stream = stream
示例#5
0
 def testParserSpeed(self):
     N = 500000
     b = Buffer(1024)
     b.write_bytes("GET /bla.html?piet=blaat&jaap=aap HTTP/1.1\r\n")
     b.write_bytes("Content-length: 10\r\n")
     b.write_bytes("\r\n")
     b.flip()
     with unittest.timer() as tmr:
         for i in range(N):
             p = _http.HTTPParser(b)
             p.parse()
             b.position = 0
     print tmr.sec(N)
示例#6
0
    def fetch10(self, s, uri):

        b = Buffer(1024)
        b.clear()
        b.write_bytes("GET %s HTTP/1.0\r\n" % uri)
        b.write_bytes("\r\n")
        b.flip()
        s.write(b)

        b.clear()
        s.read(b)
        b.flip()
        return b.read_bytes(b.remaining)
示例#7
0
def handle(client_socket):
    buffer = Buffer(1024)
    client_socket.read(buffer) #read the request
    buffer.clear()
    buffer.write_bytes(
            "HTTP/1.0 200 OK\r\n"                     \
            "Content-Length: 13\r\n"                  \
            "Connection: close\r\n"                   \
            "\r\n"                                    \
            "Hello World!\n"
        )
    buffer.flip()
    client_socket.write(buffer)
    client_socket.close()
示例#8
0
 def whois(self, query, hostname, flags):
     """Perform initial lookup with TLD whois server
     then, if the quick flag is false, search that result 
     for the region-specifc whois server and do a lookup
     there for contact details
     """
     response = ''
     engine = QueryEngine()
     result = engine.asynchronous(hostname, adns.rr.ADDR)
     if len(result[3]):
         ips = [rr[1] for rr in result[3]]
         ip = random.choice(ips)
         try:
             s = Socket.connect((ip, 43))
             writer = BufferedWriter(s, Buffer(1024))
             reader = BufferedReader(s, Buffer(1024))
             if (hostname == NICClient.GERMNICHOST):
                 writer.write_bytes("-T dn,ace -C US-ASCII " + query + "\r\n")
             else:
                 writer.write_bytes(query + "\r\n")
             writer.flush()
             while True:
                 try:
                     d = reader.read_bytes_available()
                 except EOFError:
                     break
                 response += d
                 if not d:
                     break
         except IOError:
             pass
     nhost = None
     if (flags & NICClient.WHOIS_RECURSE and nhost == None):
         nhost = self.findwhois_server(response, hostname)
     if (nhost != None):
         response += self.whois(query, nhost, 0)
     return response
示例#9
0
 def testParser(self):
     b = Buffer(1024)
     b.write_bytes(
         "POST /bla.html?piet=blaat&jaap=aap#blaataap HTTP/1.1\r\n")
     b.write_bytes("Content-length: 10\r\n")
     b.write_bytes("Another-header: blaat: piet\r\n")
     b.write_bytes("Another-header: blaat: piet\r\n")
     b.write_bytes("Content-type: blaat/piet\r\n")
     b.write_bytes("\r\n")
     b.write_bytes("1234567890")
     b.flip()
     print b.limit, b.position
     p = _http.HTTPParser(b)
     print repr(p.environ)
     print 'isfin', repr(p.is_finished())
     print p.parse()
     print 'isfin', repr(p.is_finished())
     print b.limit, b.position
     print repr(p.environ)
     print p.parse()
示例#10
0
 def writer(self):
     if self._writer is None:
         self._writer = BufferedWriter(self._stream, Buffer(self._write_buffer_size))
     return self._writer
示例#11
0
 def reader(self):
     if self._reader is None:
         self._reader = BufferedReader(self._stream, Buffer(self._read_buffer_size))
     return self._reader
示例#12
0
fd = s.fileno()
#we are connected, turn to non-blockig mode
s.setblocking(0)
#print s.fileno()

STATE_WRITE_SET_REQUEST = 0
STATE_READ_SET_RESPONSE = 1
STATE_WAIT_SET_RESPONSE = 2

state = STATE_WRITE_SET_REQUEST

N = 100000
#N = 1000
n = 0

buff = Buffer(1024)


def callback(flags):
    #print 'cb', flags
    if flags & event.EV_TIMEOUT:
        raise Exception("Timeout")
    global state
    global n
    while True:
        if state == STATE_WRITE_SET_REQUEST:
            buff.clear()
            key = 'piet%d' % n
            value = 'klaas%d' % n
            buff.write_bytes("%s %s %d 0 %d\r\n%s\r\n" %
                             ('set', key, 0, len(value), value))
示例#13
0
 def __init__(self, stream, buffer_size = 1024 * 8, read_buffer_size = 0, write_buffer_size = 0):        
     self.stream = stream
     self.reader = BufferedReader(stream, Buffer(read_buffer_size or buffer_size))
     self.writer = BufferedWriter(stream, Buffer(write_buffer_size or buffer_size))