DebugClients/Python/AsyncFile.py

branch
debugger speed
changeset 5179
5f56410e7624
parent 5178
878ce843ca9f
child 5258
cfca063afa07
equal deleted inserted replaced
5178:878ce843ca9f 5179:5f56410e7624
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 2
3 # Copyright (c) 2009 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> 3 # Copyright (c) 2002 - 2016 Detlev Offenbach <detlev@die-offenbachs.de>
4 # 4 #
5 5
6 """ 6 """
7 Module implementing an asynchronous file like socket interface for the 7 Module implementing an asynchronous file like socket interface for the
8 debugger. 8 debugger.
9 """ 9 """
10 10
11 import socket 11 import socket
12 12
13 from DebugUtilities import prepareJsonCommand 13 from DebugUtilities import prepareJsonCommand
14
15 try:
16 unicode
17 except NameError:
18 unicode = str
19 raw_input = input
14 20
15 21
16 def AsyncPendingWrite(file): 22 def AsyncPendingWrite(file):
17 """ 23 """
18 Module function to check for data to be written. 24 Module function to check for data to be written.
49 self.mode = mode 55 self.mode = mode
50 self.name = name 56 self.name = name
51 self.nWriteErrors = 0 57 self.nWriteErrors = 0
52 self.encoding = "utf-8" 58 self.encoding = "utf-8"
53 59
54 self.wpending = '' 60 self.wpending = unicode('')
55 61
56 def __checkMode(self, mode): 62 def __checkMode(self, mode):
57 """ 63 """
58 Private method to check the mode. 64 Private method to check the mode.
59 65
83 self.wpending = self.wpending[n:] 89 self.wpending = self.wpending[n:]
84 self.nWriteErrors = 0 90 self.nWriteErrors = 0
85 except socket.error: 91 except socket.error:
86 self.nWriteErrors += 1 92 self.nWriteErrors += 1
87 if self.nWriteErrors > self.maxtries: 93 if self.nWriteErrors > self.maxtries:
88 self.wpending = '' # delete all output 94 self.wpending = unicode('') # delete all output
89 95
90 def pendingWrite(self): 96 def pendingWrite(self):
91 """ 97 """
92 Public method that returns the number of bytes waiting to be written. 98 Public method that returns the number of bytes waiting to be written.
93 99
161 @param size maximum number of bytes to be read (int) 167 @param size maximum number of bytes to be read (int)
162 @return the bytes read (any) 168 @return the bytes read (any)
163 """ 169 """
164 self.__checkMode('r') 170 self.__checkMode('r')
165 171
166 buf = input() 172 buf = raw_input()
167 if size >= 0: 173 if size >= 0:
168 buf = buf[:size] 174 buf = buf[:size]
169 return buf 175 return buf
170 176
171 def readline_p(self, size=-1): 177 def readline_p(self, size=-1):
235 @param sizehint hint of the numbers of bytes to be read (int) 241 @param sizehint hint of the numbers of bytes to be read (int)
236 @return one line read (string) 242 @return one line read (string)
237 """ 243 """
238 self.__checkMode('r') 244 self.__checkMode('r')
239 245
240 line = input() + '\n' 246 line = raw_input() + '\n'
241 if sizehint >= 0: 247 if sizehint >= 0:
242 line = line[:sizehint] 248 line = line[:sizehint]
243 return line 249 return line
244 250
245 def seekable(self): 251 def seekable(self):

eric ide

mercurial