def on_message(self, message): v_response = { 'v_code': 0, 'v_context_code': 0, 'v_error': False, 'v_data': 1 } try: json_object = json.loads(message) v_code = json_object['v_code'] v_context_code = json_object['v_context_code'] v_data = json_object['v_data'] v_response['v_context_code'] = v_context_code #Login request if v_code == request.Login: self.v_user_key = v_data try: v_session = SessionStore(session_key=v_data)['omnidb_session'] v_response['v_code'] = response.LoginResult self.v_list_tab_objects = dict([]) self.write_message(json.dumps(v_response)) except Exception: v_response['v_code'] = response.SessionMissing self.write_message(json.dumps(v_response)) else: #Cancel thread if v_code == request.CancelThread: try: thread_data = self.v_list_tab_objects[v_data] if thread_data: thread_data['thread'].stop() thread_data['omnidatabase'].v_connection.Cancel() except Exception as exc: None; else: try: #Getting refreshed session s = SessionStore(session_key=self.v_user_key) v_session = s['omnidb_session'] self.v_session = v_session #Check database prompt timeout v_timeout = v_session.DatabaseReachPasswordTimeout(v_data['v_db_index']) if v_timeout['timeout']: v_response['v_code'] = response.PasswordRequired self.write_message(json.dumps(v_response)) return #create tab object if it doesn't exist try: tab_object = self.v_list_tab_objects[v_data['v_tab_id']] except Exception as exc: v_database = v_session.v_databases[v_data['v_db_index']]['database'] v_database_new = OmniDatabase.Generic.InstantiateDatabase( v_database.v_db_type, v_database.v_server, v_database.v_port, v_database.v_service, v_database.v_user, v_database.v_connection.v_password, v_database.v_conn_id, v_database.v_alias ) tab_object = { 'thread': None, 'omnidatabase': v_database_new, 'database_index': -1 } self.v_list_tab_objects[v_data['v_tab_id']] = tab_object None; #create database object if tab_object['database_index']!=v_data['v_db_index']: v_database = v_session.v_databases[v_data['v_db_index']]['database'] v_database_new = OmniDatabase.Generic.InstantiateDatabase( v_database.v_db_type, v_database.v_server, v_database.v_port, v_database.v_service, v_database.v_user, v_database.v_connection.v_password, v_database.v_conn_id, v_database.v_alias ) tab_object['omnidatabase'] = v_database_new tab_object['database_index'] = v_data['v_db_index'] v_data['v_context_code'] = v_context_code v_data['v_database'] = tab_object['omnidatabase'] #Query request if v_code == request.Query: t = StoppableThread(thread_query,v_data,self) tab_object['thread'] = t #t.setDaemon(True) t.start() #Send Ack Message v_response['v_code'] = response.QueryAck self.write_message(json.dumps(v_response)) #Query edit data elif v_code == request.QueryEditData: t = StoppableThread(thread_query_edit_data,v_data,self) tab_object['thread'] = t #t.setDaemon(True) t.start() #Send Ack Message v_response['v_code'] = response.QueryAck self.write_message(json.dumps(v_response)) #Save edit data elif v_code == request.SaveEditData: t = StoppableThread(thread_save_edit_data,v_data,self) tab_object['thread'] = t #t.setDaemon(True) t.start() except Exception: v_response['v_code'] = response.SessionMissing self.write_message(json.dumps(v_response)) except Exception as exc: logger.error('''*** Exception ***\n{0}'''.format(traceback.format_exc())) v_response['v_code'] = response.MessageException v_response['v_data'] = traceback.format_exc().replace('\n','<br>') self.write_message(json.dumps(v_response))
def on_message(self, message): v_response = { 'v_code': 0, 'v_context_code': 0, 'v_error': False, 'v_data': 1 } try: json_object = json.loads(message) v_code = json_object['v_code'] v_context_code = json_object['v_context_code'] v_data = json_object['v_data'] v_response['v_context_code'] = v_context_code #Login request if v_code == request.Login: self.v_user_key = v_data try: v_session = SessionStore(session_key=v_data)['omnidb_session'] self.v_session = v_session v_response['v_code'] = response.LoginResult self.v_list_tab_objects = dict([]) self.write_message(json.dumps(v_response)) except Exception: v_response['v_code'] = response.SessionMissing self.write_message(json.dumps(v_response)) else: #Cancel thread if v_code == request.CancelThread: try: thread_data = self.v_list_tab_objects[v_data] if thread_data: thread_data['thread'].stop() thread_data['omnidatabase'].v_connection.Cancel() except Exception as exc: None; #Close Tab elif v_code == request.CloseTab: for v_tab_close_data in v_data: closeTabHandler(self,v_tab_close_data['tab_id']) #remove from tabs table if db_tab_id is not null if v_tab_close_data['tab_db_id']: try: self.v_session.v_omnidb_database.v_connection.Execute(''' delete from tabs where tab_id = {0} '''.format(v_tab_close_data['tab_db_id'])) except Exception as exc: None else: try: #Getting refreshed session s = SessionStore(session_key=self.v_user_key) v_session = s['omnidb_session'] self.v_session = v_session #Check database prompt timeout v_timeout = v_session.DatabaseReachPasswordTimeout(v_data['v_db_index']) if v_timeout['timeout']: v_response['v_code'] = response.PasswordRequired self.write_message(json.dumps(v_response)) return if v_code == request.Query or v_code == request.QueryEditData or v_code == request.SaveEditData: #create tab object if it doesn't exist try: tab_object = self.v_list_tab_objects[v_data['v_tab_id']] except Exception as exc: v_database = v_session.v_databases[v_data['v_db_index']]['database'] v_database_new = OmniDatabase.Generic.InstantiateDatabase( v_database.v_db_type, v_database.v_server, v_database.v_port, v_database.v_service, v_database.v_user, v_database.v_connection.v_password, v_database.v_conn_id, v_database.v_alias ) tab_object = { 'thread': None, 'omnidatabase': v_database_new, 'database_index': -1, 'inserted_tab': False } self.v_list_tab_objects[v_data['v_tab_id']] = tab_object None; #create database object if tab_object['database_index']!=v_data['v_db_index']: v_database = v_session.v_databases[v_data['v_db_index']]['database'] v_database_new = OmniDatabase.Generic.InstantiateDatabase( v_database.v_db_type, v_database.v_server, v_database.v_port, v_database.v_service, v_database.v_user, v_database.v_connection.v_password, v_database.v_conn_id, v_database.v_alias ) tab_object['omnidatabase'] = v_database_new tab_object['database_index'] = v_data['v_db_index'] v_data['v_context_code'] = v_context_code v_data['v_database'] = tab_object['omnidatabase'] #Query request if v_code == request.Query: tab_object['tab_db_id'] = v_data['v_tab_db_id'] v_data['v_tab_object'] = tab_object t = StoppableThread(thread_query,v_data,self) tab_object['thread'] = t tab_object['type'] = 'query' tab_object['sql_cmd'] = v_data['v_sql_cmd'] tab_object['tab_id'] = v_data['v_tab_id'] #t.setDaemon(True) t.start() #Send Ack Message v_response['v_code'] = response.QueryAck self.write_message(json.dumps(v_response)) #Query edit data elif v_code == request.QueryEditData: t = StoppableThread(thread_query_edit_data,v_data,self) tab_object['thread'] = t tab_object['type'] = 'edit' #t.setDaemon(True) t.start() #Send Ack Message v_response['v_code'] = response.QueryAck self.write_message(json.dumps(v_response)) #Save edit data elif v_code == request.SaveEditData: t = StoppableThread(thread_save_edit_data,v_data,self) tab_object['thread'] = t tab_object['type'] = 'edit' #t.setDaemon(True) t.start() #Debugger elif v_code == request.Debug: #New debugger, create connections if v_data['v_state'] == debugState.Starting: v_database = v_session.v_databases[v_data['v_db_index']]['database'] v_database_debug = OmniDatabase.Generic.InstantiateDatabase( v_database.v_db_type, v_database.v_server, v_database.v_port, v_database.v_service, v_database.v_user, v_database.v_connection.v_password, v_database.v_conn_id, v_database.v_alias ) v_database_control = OmniDatabase.Generic.InstantiateDatabase( v_database.v_db_type, v_database.v_server, v_database.v_port, v_database.v_service, v_database.v_user, v_database.v_connection.v_password, v_database.v_conn_id, v_database.v_alias ) tab_object = { 'thread': None, 'omnidatabase_debug': v_database_debug, 'omnidatabase_control': v_database_control, 'debug_pid': -1, 'cancelled': False, 'tab_id': v_data['v_tab_id'], 'type': 'debug' } self.v_list_tab_objects[v_data['v_tab_id']] = tab_object #Existing debugger, get existing tab_object else: tab_object = self.v_list_tab_objects[v_data['v_tab_id']] v_data['v_context_code'] = v_context_code v_data['v_tab_object'] = tab_object t = StoppableThread(thread_debug,v_data,self) #tab_object['thread'] = t #t.setDaemon(True) t.start() #Send Ack Message v_response['v_code'] = response.QueryAck self.write_message(json.dumps(v_response)) except Exception as exc: v_response['v_code'] = response.SessionMissing self.write_message(json.dumps(v_response)) except Exception as exc: logger.error('''*** Exception ***\n{0}'''.format(traceback.format_exc())) v_response['v_code'] = response.MessageException v_response['v_data'] = traceback.format_exc().replace('\n','<br>') self.write_message(json.dumps(v_response))