def __init__(self, manager): self.columnNames = [ "Protocol", "ID", "Status", "Time", "ServiceGroup", "Destination", "TargetPorts", "LocalPort", "Address", "Information" ] self.statusMap = {SessionStatus.RUNNING:"Running", SessionStatus.STOPPED:"Stopped", SessionStatus.INITIAL:"Initial",\ SessionStatus.CONNECTING:"Connecting", SessionStatus.NETWORKERROR:"Failed", SessionStatus.EXECPTION:"Execption",\ SessionStatus.REMOVED:"Remove",\ SessionStatus.SETUP:"Setup", SessionStatus.PAUSE: "Pause"} self.colourMap = {SessionStatus.RUNNING:"LimeGreen", SessionStatus.STOPPED:"SlateGray",\ SessionStatus.INITIAL:"RoyalBlue1",\ SessionStatus.SETUP: "YellowGreen",\ SessionStatus.CONNECTING:"yellow2",\ SessionStatus.NETWORKERROR:"red",SessionStatus.EXECPTION:"Orange",\ SessionStatus.REMOVED:"black",\ SessionStatus.PAUSE: "chocolate"} self.listStore = None self.treeView = None self.scrollWindow = None self.statics = None self.currentTime = None self.runTimeLable = gtk.Label("Time: 0:0") self.runningLabel = gtk.Label("Running: 0") self.pauseLabel = gtk.Label("Pause: 0") self.stoppedLabel = gtk.Label("Stopped: 0") self.initialLabel = gtk.Label("Initial: 0") self.failingLabel = gtk.Label("Failed: 0") self.setupLabel = gtk.Label("Setup: 0") self.totalLabel = gtk.Label("Total: 0") self.connectingLabel = gtk.Label("Connecting: 0") self.exceptionLabel = gtk.Label("Exception: 0") self.manager = manager # accelerate finding the session in session view. self.accelerate = {} self.updateWorker = UpdateStatisticsWorker(self, manager) self.lock = threading.Lock() self.RightKeyMenu = SessionRightKeyMenu(manager)
def __init__(self, manager=None): self.statusMap = { SessionStatus.RUNNING: "Running", SessionStatus.STOPPED: 'Stopped', SessionStatus.INITIAL: 'Initial', SessionStatus.CONNECTING: 'Connecting', SessionStatus.NETWORKERROR: 'Failed', SessionStatus.EXECPTION: 'Exception', SessionStatus.REMOVED: 'Remove', SessionStatus.PAUSE: 'Pause', SessionStatus.SETUP: 'Setup', } self.session_records = [] self.statics = None self.manager = manager self.accelerate = {} self.updateWorker = UpdateStatisticsWorker(self, manager) self.lock = threading.Lock() self.info = "" self.count = 0
def __init__(self,manager = None): self.statusMap = { SessionStatus.RUNNING:"Running", SessionStatus.STOPPED:'Stopped', SessionStatus.INITIAL:'Initial', SessionStatus.CONNECTING:'Connecting', SessionStatus.NETWORKERROR:'Failed', SessionStatus.EXECPTION:'Exception', SessionStatus.REMOVED:'Remove', SessionStatus.PAUSE:'Pause', SessionStatus.SETUP:'Setup', } self.session_records = [] self.statics = None self.manager = manager self.accelerate = {} self.updateWorker = UpdateStatisticsWorker(self,manager) self.lock = threading.Lock() self.info = "" self.count = 0
def __init__(self, manager): self.columnNames = ["Protocol","ID","Status","Time","ServiceGroup","Destination", "TargetPorts", "LocalPort", "Address", "Information"] self.statusMap = {SessionStatus.RUNNING:"Running", SessionStatus.STOPPED:"Stopped", SessionStatus.INITIAL:"Initial",\ SessionStatus.CONNECTING:"Connecting", SessionStatus.NETWORKERROR:"Failed", SessionStatus.EXECPTION:"Execption",\ SessionStatus.REMOVED:"Remove",\ SessionStatus.SETUP:"Setup", SessionStatus.PAUSE: "Pause"} self.colourMap = {SessionStatus.RUNNING:"LimeGreen", SessionStatus.STOPPED:"SlateGray",\ SessionStatus.INITIAL:"RoyalBlue1",\ SessionStatus.SETUP: "YellowGreen",\ SessionStatus.CONNECTING:"yellow2",\ SessionStatus.NETWORKERROR:"red",SessionStatus.EXECPTION:"Orange",\ SessionStatus.REMOVED:"black",\ SessionStatus.PAUSE: "chocolate"} self.listStore = None self.treeView = None self.scrollWindow = None self.statics = None self.currentTime = None self.runTimeLable = gtk.Label("Time: 0:0") self.runningLabel = gtk.Label("Running: 0") self.pauseLabel = gtk.Label("Pause: 0") self.stoppedLabel = gtk.Label("Stopped: 0") self.initialLabel = gtk.Label("Initial: 0") self.failingLabel = gtk.Label("Failed: 0") self.setupLabel = gtk.Label("Setup: 0") self.totalLabel = gtk.Label("Total: 0") self.connectingLabel = gtk.Label("Connecting: 0") self.exceptionLabel = gtk.Label("Exception: 0") self.manager = manager # accelerate finding the session in session view. self.accelerate = {} self.updateWorker = UpdateStatisticsWorker(self, manager) self.lock = threading.Lock() self.RightKeyMenu = SessionRightKeyMenu(manager)
def startWatchDog(manager, win): watchDog = WatchDog() worker = UpdateStatisticsWorker(watchDog, manager) worker.setScheduleTime(10) worker.start()
def startWatchDog(manager,win): watchDog = WatchDog() worker = UpdateStatisticsWorker(watchDog,manager) worker.setScheduleTime(10) worker.start()
class ui_term(Observer,UpdateInterface): def __init__(self,manager = None): self.statusMap = { SessionStatus.RUNNING:"Running", SessionStatus.STOPPED:'Stopped', SessionStatus.INITIAL:'Initial', SessionStatus.CONNECTING:'Connecting', SessionStatus.NETWORKERROR:'Failed', SessionStatus.EXECPTION:'Exception', SessionStatus.REMOVED:'Remove', SessionStatus.PAUSE:'Pause', SessionStatus.SETUP:'Setup', } self.session_records = [] self.statics = None self.manager = manager self.accelerate = {} self.updateWorker = UpdateStatisticsWorker(self,manager) self.lock = threading.Lock() self.info = "" self.count = 0 def __format(self,array): array[0] = ansi['darkblue'] + str(array[0]) + " " * (WIDTH["PROTOCOL"] - len(str(array[0]))) + ansi['default'] array[1] = ansi['darkyellow'] + str(array[1]) + " " * (WIDTH["ID"] - len(str(array[1]))) + ansi['default'] array[2] = ansi['white'] + str(array[2]) + " " * (WIDTH["ADDR"] - len(str(array[2]))) + ansi['default'] array[3] = ansi['darkgreen'] + str(array[3]) + " " * (WIDTH["TIME"] - len(str(array[3]))) + ansi['default'] if array[4].find("Failed") == -1: array[4] = ansi['darkgreen'] + str(array[4]) + " " * (WIDTH["STATUS"] - len(str(array[4]))) + ansi['default'] else: array[4] = ansi['darkred'] + str(array[4]) + " " * (WIDTH["STATUS"] - len(str(array[4]))) + ansi['default'] array[5] = ansi['default'] + str(array[5]) + " " * (WIDTH["DESTINATION"] - len(str(array[5]))) array[6] = ansi['darkyellow'] + str(array[6]) + " " * (WIDTH["CLIENT_PORT"] - len(str(array[6]))) + ansi['default'] arraystr = "" for each in array: arraystr += str(each) return arraystr def restore_scrn(self): sys.stdout.write(ansi['default']) def display_head(self): string = self.__format(HEAD) sys.stdout.write(string + '\n') def display_info(self): sys.stdout.write(ansi['white'] + self.info + '\n') def display_line(self,array): string = self.__format(array) sys.stdout.write(string + '\n') def __del__(self): self.manager.stop() def createView(self): self.display_head() self.updateWorker.start() def update(self,statics): total = statics.total() setup = statics[SessionStatus.SETUP] run = statics[SessionStatus.RUNNING] stop = statics[SessionStatus.STOPPED] fail = statics[SessionStatus.NETWORKERROR] connect = statics[SessionStatus.CONNECTING] paused = statics[SessionStatus.PAUSE] initial = statics[SessionStatus.INITIAL] self.info = str("\nTotal = %d Initial = %d Connect = %d Setup = %d Run = %d Paused = %d Failed = %d Stop = %d\n" % (total, initial, connect, setup, run, paused, fail, stop)) def addNewSession(self,status): protocol = status.getProtocol() id = status.getId() sessionStatus = self.statusMap[status.getStatus()] runTime = status.getTime() address = status.getAddress() params = status.getParamsFromRemote() destination = "NoAddress" port = "NoPort" session_record = [protocol,id,address,runTime,sessionStatus,destination,port] self.accelerate[id] = session_record self.session_records.append(session_record) self.display_line(session_record) def __clearStoppedSession(self,id): del self.accelerate[id] self.session_records.remove[id] def updateSessionStatus(self,status): self.lock.acquire() if status.getId() in self.accelerate.keys(): id = status.getId() self.accelerate[id][STATUS] = self.statusMap[status.getStatus()] self.accelerate[id][TIME] = status.getTime() if self.accelerate[id][STATUS] == "Setup": self.accelerate[id][DESTINATION] = status.getParamsFromRemote()['destination'] self.accelerate[id][CLIENT_PORT] = status.getParamsFromRemote()['client_port'] self.count += 1 if self.count > len(self.accelerate.keys()): for each in self.session_records: self.display_line(each) self.display_info() time.sleep(1.5) self.count = 0 else: self.addNewSession(status) self.lock.release() def updateView(self,status): self.updateSessionStatus(status)
class SessionView(Observer, UpdateInterface): def __init__(self, manager): self.columnNames = [ "Protocol", "ID", "Status", "Time", "ServiceGroup", "Destination", "TargetPorts", "LocalPort", "Address", "Information" ] self.statusMap = {SessionStatus.RUNNING:"Running", SessionStatus.STOPPED:"Stopped", SessionStatus.INITIAL:"Initial",\ SessionStatus.CONNECTING:"Connecting", SessionStatus.NETWORKERROR:"Failed", SessionStatus.EXECPTION:"Execption",\ SessionStatus.REMOVED:"Remove",\ SessionStatus.SETUP:"Setup", SessionStatus.PAUSE: "Pause"} self.colourMap = {SessionStatus.RUNNING:"LimeGreen", SessionStatus.STOPPED:"SlateGray",\ SessionStatus.INITIAL:"RoyalBlue1",\ SessionStatus.SETUP: "YellowGreen",\ SessionStatus.CONNECTING:"yellow2",\ SessionStatus.NETWORKERROR:"red",SessionStatus.EXECPTION:"Orange",\ SessionStatus.REMOVED:"black",\ SessionStatus.PAUSE: "chocolate"} self.listStore = None self.treeView = None self.scrollWindow = None self.statics = None self.currentTime = None self.runTimeLable = gtk.Label("Time: 0:0") self.runningLabel = gtk.Label("Running: 0") self.pauseLabel = gtk.Label("Pause: 0") self.stoppedLabel = gtk.Label("Stopped: 0") self.initialLabel = gtk.Label("Initial: 0") self.failingLabel = gtk.Label("Failed: 0") self.setupLabel = gtk.Label("Setup: 0") self.totalLabel = gtk.Label("Total: 0") self.connectingLabel = gtk.Label("Connecting: 0") self.exceptionLabel = gtk.Label("Exception: 0") self.manager = manager # accelerate finding the session in session view. self.accelerate = {} self.updateWorker = UpdateStatisticsWorker(self, manager) self.lock = threading.Lock() self.RightKeyMenu = SessionRightKeyMenu(manager) def __del__(self): self.manager.stop() def onRightMouseClick(self, widget, event, selection): RIGHT_BUTTON = 3 if event.button == RIGHT_BUTTON: self.treeView.grab_focus() (model, path) = selection.get_selected_rows() ids = [] for p in path: ids.append(model[p][ID]) self.RightKeyMenu.createPopupMenu(self.manager, ids, event) def createView(self): """ protocol, id, status, time, address""" hBox = gtk.HBox(False, 9) hBox.pack_start(self.totalLabel, True, False, 5) hBox.pack_start(self.runTimeLable, True, False, 5) hBox.pack_start(self.setupLabel, True, False, 5) hBox.pack_start(self.runningLabel, True, False, 5) hBox.pack_start(self.pauseLabel, True, False, 5) hBox.pack_start(self.failingLabel, True, False, 5) hBox.pack_start(self.exceptionLabel, True, False, 5) hBox.pack_start(self.stoppedLabel, True, False, 5) hBox.pack_start(self.connectingLabel, True, False, 5) hBox.pack_start(self.initialLabel, True, False, 5) vBox = gtk.VBox() self.listStore = gtk.ListStore(str, int, str, int, str, str, str, str, str, str, str) self.treeView = gtk.TreeView(self.listStore) self.selection = self.treeView.get_selection() self.selection.set_mode(gtk.SELECTION_MULTIPLE) self.treeView.connect("button-press-event", self.onRightMouseClick, self.selection) i = 0 for name in self.columnNames: cell = gtk.CellRendererText() column = gtk.TreeViewColumn(name) column.pack_start(cell, True) column.add_attribute(cell, "text", i) column.add_attribute(cell, "background", BACKGROUND) self.treeView.append_column(column) i = i + 1 self.scrollWindow = gtk.ScrolledWindow() self.scrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.scrollWindow.add(self.treeView) vBox.pack_start(self.scrollWindow, True) vBox.pack_start(hBox, False) self.updateWorker.start() return vBox def update(self, statics): self.initialLabel.set_text("Initial: %d" % statics[SessionStatus.INITIAL]) self.connectingLabel.set_text("Connecting: %d" % statics[SessionStatus.CONNECTING]) self.runningLabel.set_text("Running: %d" % statics[SessionStatus.RUNNING]) self.stoppedLabel.set_text("Stopped: %d" % statics[SessionStatus.STOPPED]) self.failingLabel.set_text("Failing: %d" % statics[SessionStatus.NETWORKERROR]) self.pauseLabel.set_text("Pause: %d" % statics[SessionStatus.PAUSE]) self.exceptionLabel.set_text("Exception: %d" % statics[SessionStatus.EXECPTION]) self.setupLabel.set_text("Setup: %d" % statics[SessionStatus.SETUP]) total = statics.total() self.totalLabel.set_text("Total: %d" % total) self.displayTime(statics) def displayTime(self, statics): if statics[SessionStatus.RUNNING] > 0 or statics[ SessionStatus.PAUSE] > 0: if self.currentTime == None: self.currentTime = time.time() seconds = (int)(time.time() - self.currentTime) self.runTimeLable.set_text("Time: %d:%d" % ((seconds / 3600), (seconds % 3600) / 60)) else: self.currentTime = None def addNewSession(self, status): protocol = status.getProtocol() id = status.getId() sessionStatus = self.statusMap[status.getStatus()] runTime = status.getTime() address = status.getAddress() colour = self.colourMap[status.getStatus()] param = status.getParam() localport = "NoPort" ports = "NoPort" destination = "NoAddress" errorInfo = "" iterator = self.listStore.append([ protocol, id, sessionStatus, runTime, param, destination, ports, localport, address, errorInfo, colour ]) self.accelerate[id] = iterator def __getListStoreIter(self, id): if self.accelerate.has_key(id) == True: return self.accelerate[id] return None def __clearStoppedSession(self, id, iterator): del self.accelerate[id] self.listStore.remove(iterator) def __setParams(self, iterator, params): if params.has_key('client_port'): self.listStore.set(iterator, PORTS, params['client_port']) if params.has_key('destination'): self.listStore.set(iterator, DESTINATION, params['destination']) def __setError(self, iterator, error): self.listStore.set(iterator, ERRORINFO, error) def updateSessionStatus(self, status): self.lock.acquire() iterator = self.__getListStoreIter(status.getId()) if iterator != None and status.getStatus() != SessionStatus.INITIAL: id = self.listStore.get(iterator, ID)[0] if id == status.getId(): self.listStore.set(iterator, TIME, status.getTime()) self.listStore.set(iterator, STATUS, self.statusMap[status.getStatus()]) if status.getStatus() & SessionStatus.SETUP: self.__setError(iterator, "") self.__setParams(iterator, status.getParamsFromRemote()) localPort = status.getLocalPort() self.listStore.set(iterator, LOCALPORT, localPort) if status.getStatus() & SessionStatus.NETWORKERROR: self.__setError(iterator, status.getErrorInfo()) self.listStore.set(iterator, BACKGROUND, self.colourMap[status.getStatus()]) if status.getStatus() == SessionStatus.REMOVED: self.__clearStoppedSession(status.getId(), iterator) self.lock.release() return if iterator == None and status.getStatus() == SessionStatus.INITIAL: self.addNewSession(status) self.lock.release() #Implement the Observer interface to update the session view def updateView(self, status): self.updateSessionStatus(status)
class SessionView(Observer, UpdateInterface): def __init__(self, manager): self.columnNames = ["Protocol","ID","Status","Time","ServiceGroup","Destination", "TargetPorts", "LocalPort", "Address", "Information"] self.statusMap = {SessionStatus.RUNNING:"Running", SessionStatus.STOPPED:"Stopped", SessionStatus.INITIAL:"Initial",\ SessionStatus.CONNECTING:"Connecting", SessionStatus.NETWORKERROR:"Failed", SessionStatus.EXECPTION:"Execption",\ SessionStatus.REMOVED:"Remove",\ SessionStatus.SETUP:"Setup", SessionStatus.PAUSE: "Pause"} self.colourMap = {SessionStatus.RUNNING:"LimeGreen", SessionStatus.STOPPED:"SlateGray",\ SessionStatus.INITIAL:"RoyalBlue1",\ SessionStatus.SETUP: "YellowGreen",\ SessionStatus.CONNECTING:"yellow2",\ SessionStatus.NETWORKERROR:"red",SessionStatus.EXECPTION:"Orange",\ SessionStatus.REMOVED:"black",\ SessionStatus.PAUSE: "chocolate"} self.listStore = None self.treeView = None self.scrollWindow = None self.statics = None self.currentTime = None self.runTimeLable = gtk.Label("Time: 0:0") self.runningLabel = gtk.Label("Running: 0") self.pauseLabel = gtk.Label("Pause: 0") self.stoppedLabel = gtk.Label("Stopped: 0") self.initialLabel = gtk.Label("Initial: 0") self.failingLabel = gtk.Label("Failed: 0") self.setupLabel = gtk.Label("Setup: 0") self.totalLabel = gtk.Label("Total: 0") self.connectingLabel = gtk.Label("Connecting: 0") self.exceptionLabel = gtk.Label("Exception: 0") self.manager = manager # accelerate finding the session in session view. self.accelerate = {} self.updateWorker = UpdateStatisticsWorker(self, manager) self.lock = threading.Lock() self.RightKeyMenu = SessionRightKeyMenu(manager) def __del__(self): self.manager.stop() def onRightMouseClick(self, widget, event, selection): RIGHT_BUTTON = 3 if event.button == RIGHT_BUTTON: self.treeView.grab_focus() (model, path) = selection.get_selected_rows() ids = [] for p in path: ids.append(model[p][ID]) self.RightKeyMenu.createPopupMenu(self.manager, ids, event) def createView(self): """ protocol, id, status, time, address""" hBox = gtk.HBox(False, 9) hBox.pack_start(self.totalLabel, True,False,5) hBox.pack_start(self.runTimeLable,True,False,5) hBox.pack_start(self.setupLabel, True,False,5) hBox.pack_start(self.runningLabel,True,False,5) hBox.pack_start(self.pauseLabel, True,False,5) hBox.pack_start(self.failingLabel,True,False,5) hBox.pack_start(self.exceptionLabel, True,False,5) hBox.pack_start(self.stoppedLabel, True, False,5) hBox.pack_start(self.connectingLabel,True, False,5) hBox.pack_start(self.initialLabel, True,False,5) vBox = gtk.VBox() self.listStore = gtk.ListStore(str, int, str, int, str, str, str, str, str, str, str) self.treeView = gtk.TreeView(self.listStore) self.selection = self.treeView.get_selection() self.selection.set_mode(gtk.SELECTION_MULTIPLE) self.treeView.connect("button-press-event", self.onRightMouseClick, self.selection) i = 0 for name in self.columnNames: cell = gtk.CellRendererText() column = gtk.TreeViewColumn(name) column.pack_start(cell, True) column.add_attribute(cell, "text", i) column.add_attribute(cell,"background",BACKGROUND) self.treeView.append_column(column) i = i + 1 self.scrollWindow = gtk.ScrolledWindow() self.scrollWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.scrollWindow.add(self.treeView) vBox.pack_start(self.scrollWindow,True) vBox.pack_start(hBox,False) self.updateWorker.start() return vBox def update(self, statics): self.initialLabel.set_text("Initial: %d" % statics[SessionStatus.INITIAL]) self.connectingLabel.set_text("Connecting: %d" % statics[SessionStatus.CONNECTING]) self.runningLabel.set_text("Running: %d" % statics[SessionStatus.RUNNING]) self.stoppedLabel.set_text("Stopped: %d" % statics[SessionStatus.STOPPED]) self.failingLabel.set_text("Failing: %d" % statics[SessionStatus.NETWORKERROR]) self.pauseLabel.set_text("Pause: %d" % statics[SessionStatus.PAUSE]) self.exceptionLabel.set_text("Exception: %d" % statics[SessionStatus.EXECPTION]) self.setupLabel.set_text("Setup: %d" % statics[SessionStatus.SETUP]) total = statics.total() self.totalLabel.set_text("Total: %d" % total) self.displayTime(statics) def displayTime(self, statics): if statics[SessionStatus.RUNNING] > 0 or statics[SessionStatus.PAUSE] > 0: if self.currentTime == None: self.currentTime = time.time() seconds = (int)(time.time() - self.currentTime) self.runTimeLable.set_text("Time: %d:%d" % ((seconds / 3600), (seconds % 3600) / 60)) else: self.currentTime = None def addNewSession(self, status): protocol = status.getProtocol() id = status.getId() sessionStatus = self.statusMap[status.getStatus()] runTime = status.getTime() address = status.getAddress() colour = self.colourMap[status.getStatus()] param = status.getParam() localport = "NoPort" ports = "NoPort" destination = "NoAddress" errorInfo = "" iterator = self.listStore.append([protocol, id, sessionStatus, runTime, param, destination, ports, localport, address, errorInfo, colour]) self.accelerate[id] = iterator def __getListStoreIter(self, id): if self.accelerate.has_key(id) == True: return self.accelerate[id] return None def __clearStoppedSession(self,id,iterator): del self.accelerate[id] self.listStore.remove(iterator) def __setParams(self, iterator, params): if params.has_key('client_port'): self.listStore.set(iterator, PORTS, params['client_port']) if params.has_key('destination'): self.listStore.set(iterator, DESTINATION, params['destination']) def __setError(self, iterator, error): self.listStore.set(iterator, ERRORINFO, error) def updateSessionStatus(self, status): self.lock.acquire() iterator = self.__getListStoreIter(status.getId()) if iterator != None and status.getStatus() != SessionStatus.INITIAL: id = self.listStore.get(iterator, ID)[0] if id == status.getId(): self.listStore.set(iterator, TIME, status.getTime()) self.listStore.set(iterator, STATUS, self.statusMap[status.getStatus()]) if status.getStatus() & SessionStatus.SETUP: self.__setError(iterator, "") self.__setParams(iterator, status.getParamsFromRemote()) localPort = status.getLocalPort() self.listStore.set(iterator, LOCALPORT, localPort) if status.getStatus() & SessionStatus.NETWORKERROR: self.__setError(iterator, status.getErrorInfo()) self.listStore.set(iterator, BACKGROUND, self.colourMap[status.getStatus()]) if status.getStatus() == SessionStatus.REMOVED: self.__clearStoppedSession(status.getId(), iterator) self.lock.release() return if iterator == None and status.getStatus() == SessionStatus.INITIAL: self.addNewSession(status) self.lock.release() #Implement the Observer interface to update the session view def updateView(self, status): self.updateSessionStatus(status)
class ui_term(Observer, UpdateInterface): def __init__(self, manager=None): self.statusMap = { SessionStatus.RUNNING: "Running", SessionStatus.STOPPED: 'Stopped', SessionStatus.INITIAL: 'Initial', SessionStatus.CONNECTING: 'Connecting', SessionStatus.NETWORKERROR: 'Failed', SessionStatus.EXECPTION: 'Exception', SessionStatus.REMOVED: 'Remove', SessionStatus.PAUSE: 'Pause', SessionStatus.SETUP: 'Setup', } self.session_records = [] self.statics = None self.manager = manager self.accelerate = {} self.updateWorker = UpdateStatisticsWorker(self, manager) self.lock = threading.Lock() self.info = "" self.count = 0 def __format(self, array): array[0] = ansi['darkblue'] + str(array[0]) + " " * ( WIDTH["PROTOCOL"] - len(str(array[0]))) + ansi['default'] array[1] = ansi['darkyellow'] + str(array[1]) + " " * ( WIDTH["ID"] - len(str(array[1]))) + ansi['default'] array[2] = ansi['white'] + str(array[2]) + " " * ( WIDTH["ADDR"] - len(str(array[2]))) + ansi['default'] array[3] = ansi['darkgreen'] + str(array[3]) + " " * ( WIDTH["TIME"] - len(str(array[3]))) + ansi['default'] if array[4].find("Failed") == -1: array[4] = ansi['darkgreen'] + str(array[4]) + " " * ( WIDTH["STATUS"] - len(str(array[4]))) + ansi['default'] else: array[4] = ansi['darkred'] + str(array[4]) + " " * ( WIDTH["STATUS"] - len(str(array[4]))) + ansi['default'] array[5] = ansi['default'] + str( array[5]) + " " * (WIDTH["DESTINATION"] - len(str(array[5]))) array[6] = ansi['darkyellow'] + str(array[6]) + " " * ( WIDTH["CLIENT_PORT"] - len(str(array[6]))) + ansi['default'] arraystr = "" for each in array: arraystr += str(each) return arraystr def restore_scrn(self): sys.stdout.write(ansi['default']) def display_head(self): string = self.__format(HEAD) sys.stdout.write(string + '\n') def display_info(self): sys.stdout.write(ansi['white'] + self.info + '\n') def display_line(self, array): string = self.__format(array) sys.stdout.write(string + '\n') def __del__(self): self.manager.stop() def createView(self): self.display_head() self.updateWorker.start() def update(self, statics): total = statics.total() setup = statics[SessionStatus.SETUP] run = statics[SessionStatus.RUNNING] stop = statics[SessionStatus.STOPPED] fail = statics[SessionStatus.NETWORKERROR] connect = statics[SessionStatus.CONNECTING] paused = statics[SessionStatus.PAUSE] initial = statics[SessionStatus.INITIAL] self.info = str( "\nTotal = %d Initial = %d Connect = %d Setup = %d Run = %d Paused = %d Failed = %d Stop = %d\n" % (total, initial, connect, setup, run, paused, fail, stop)) def addNewSession(self, status): protocol = status.getProtocol() id = status.getId() sessionStatus = self.statusMap[status.getStatus()] runTime = status.getTime() address = status.getAddress() params = status.getParamsFromRemote() destination = "NoAddress" port = "NoPort" session_record = [ protocol, id, address, runTime, sessionStatus, destination, port ] self.accelerate[id] = session_record self.session_records.append(session_record) self.display_line(session_record) def __clearStoppedSession(self, id): del self.accelerate[id] self.session_records.remove[id] def updateSessionStatus(self, status): self.lock.acquire() if status.getId() in self.accelerate.keys(): id = status.getId() self.accelerate[id][STATUS] = self.statusMap[status.getStatus()] self.accelerate[id][TIME] = status.getTime() if self.accelerate[id][STATUS] == "Setup": self.accelerate[id][DESTINATION] = status.getParamsFromRemote( )['destination'] self.accelerate[id][CLIENT_PORT] = status.getParamsFromRemote( )['client_port'] self.count += 1 if self.count > len(self.accelerate.keys()): for each in self.session_records: self.display_line(each) self.display_info() time.sleep(1.5) self.count = 0 else: self.addNewSession(status) self.lock.release() def updateView(self, status): self.updateSessionStatus(status)