예제 #1
0
파일: dsfile.py 프로젝트: paul-axe/darknet
 def readline(self):
     data = ""
     try:
         dsunittest.trace3("AsyncSocketFile readlining data timeout is %f" % self.timeout_)
         self.socket_.setblocking(0)
         data = self._readline()
     finally:
         dsunittest.trace3("  AsyncSocketFile readline returning %u bytes" % len(data))
         self.socket_.setblocking(1)
     return data
예제 #2
0
파일: dsfile.py 프로젝트: paul-axe/darknet
 def _readline(self):
         startTime = time.time()
         while self.readBuffer_.find("\n") == -1:
             try:
                 dsunittest.trace3("_readline calling recv with timeout %f" % self.timeout_)
                 ret = self.socket_.recv(512)
                 dsunittest.trace3("_readline recv returned with timeout %f" % self.timeout_)
                 if not ret:
                     #raise "No more data. Read buffer is: %s" % self.readBuffer_
                     ret = self.readBuffer_
                     self.readBuffer_ = ""
                     return ret
                 self.readBuffer_ += ret
             except socket.error:
                 elapsed = time.time() - startTime
                 dsunittest.trace3("Elapsed is %f, timeout is %f" % (elapsed, self.timeout_))
                 if self.timeout_ and elapsed > self.timeout_:
                     dsunittest.trace3("Raising timeout at %f, timeout is %f" % (elapsed, self.timeout_))
                     raise Timeout()
                 else:
                     time.sleep(1)
         pos = self.readBuffer_.index("\n") + 1
         line = self.readBuffer_[:pos]
         self.readBuffer_ = self.readBuffer_[pos:]
         return line
예제 #3
0
파일: dsfile.py 프로젝트: paul-axe/darknet
 def read(self, numBytes):
     dsunittest.trace3("AsyncSocketFile reading data, size=%d" % numBytes)
     try:
         self.socket_.setblocking(0)
         while numBytes > len(self.readBuffer_):
             try:
                 ret = self.socket_.recv(numBytes)
                 assert len(ret) <= numBytes
                 if len(ret) == 0:
                     break
                 else:
                     self.readBuffer_ += ret
             except socket.error:
                 pass
         ret = self.readBuffer_[:numBytes]
         self.readBuffer_ = self.readBuffer_[numBytes:]
         return ret
     finally:
         self.socket_.setblocking(1)
         dsunittest.trace3("  AsyncSocketFile read returning")
예제 #4
0
파일: dsfile.py 프로젝트: paul-axe/darknet
 def write(self, data):
     dsunittest.trace3("AsyncSocketFile writing %d bytes" % len(data))
     try:
         while data:
             written = self.socket_.send(data)
             dsunittest.trace3("  AsyncSocketFile wrote a block of %d bytes" % written)
             data = data[written:]
     finally:
         dsunittest.trace3("  AsyncSocketFile write returning")