Fixed scripts up, improved logging so console has a waking thread now.
Also fixed bug if console timer is too long it'll be killed off appropriately.
This commit is contained in:
parent
ea14f96d76
commit
92d217371c
3 changed files with 50 additions and 14 deletions
21
p4Helper.py
21
p4Helper.py
|
@ -81,11 +81,11 @@ def match_in_ignore_list( path, ignore_list ):
|
|||
|
||||
#==============================================================
|
||||
def call_process( args ):
|
||||
return subprocess.call( args.split( ), stdout=subprocess.PIPE, stderr=subprocess.PIPE )
|
||||
return subprocess.call( args, stdout=subprocess.PIPE, stderr=subprocess.PIPE )
|
||||
|
||||
def try_call_process( args, path=None ):
|
||||
try:
|
||||
subprocess.check_output( args.split( ), shell=False, cwd=path, stderr=subprocess.STDOUT )
|
||||
subprocess.check_output( args, shell=False, cwd=path )#, stderr=subprocess.STDOUT )
|
||||
return 0
|
||||
except subprocess.CalledProcessError:
|
||||
return 1
|
||||
|
@ -113,7 +113,7 @@ def parse_info_from_command( args, value, path = None ):
|
|||
|
||||
def get_p4_py_results( args, path = None ):
|
||||
results = []
|
||||
proc = subprocess.Popen( [ 'p4', '-G' ] + args.split( ), stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=path )
|
||||
proc = subprocess.Popen( 'p4 -G ' + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=path )
|
||||
try:
|
||||
while True:
|
||||
output = marshal.load( proc.stdout )
|
||||
|
@ -286,6 +286,14 @@ class PDict( dict ):
|
|||
class Console( threading.Thread ):
|
||||
MSG = enum('WRITE', 'FLUSH', 'SHUTDOWN', 'CLEAR' )
|
||||
|
||||
@staticmethod
|
||||
def wake(thread):
|
||||
thread.flush()
|
||||
if not thread.shutting_down:
|
||||
thread.wake_thread = threading.Timer(thread.auto_flush_time / 1000.0, Console.wake, [thread])
|
||||
thread.wake_thread.daemon = True
|
||||
thread.wake_thread.start()
|
||||
|
||||
# auto_flush_time is time in milliseconds since last flush to trigger a flush when writing
|
||||
def __init__( self, auto_flush_num = None, auto_flush_time = None ):
|
||||
threading.Thread.__init__( self )
|
||||
|
@ -296,6 +304,9 @@ class Console( threading.Thread ):
|
|||
self.auto_flush_num = auto_flush_num if auto_flush_num is not None else -1
|
||||
self.auto_flush_time = auto_flush_time * 1000 if auto_flush_time is not None else -1
|
||||
self.shutting_down = False
|
||||
self.wake_thread = None
|
||||
if self.auto_flush_time > 0:
|
||||
Console.wake(self)
|
||||
|
||||
def write( self, data, pid = None ):
|
||||
pid = pid if pid is not None else threading.current_thread().ident
|
||||
|
@ -319,6 +330,10 @@ class Console( threading.Thread ):
|
|||
return self
|
||||
|
||||
def __exit__( self, type, value, tb ):
|
||||
self.shutting_down = True
|
||||
if self.wake_thread:
|
||||
self.wake_thread.cancel()
|
||||
self.wake_thread.join()
|
||||
self.queue.put( ( Console.MSG.SHUTDOWN, ) )
|
||||
self.queue.join( )
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue