summaryrefslogtreecommitdiffstats
path: root/ProcessList.h
diff options
context:
space:
mode:
authorNathan Scott <nathans@redhat.com>2023-08-22 16:11:05 +1000
committerNathan Scott <nathans@redhat.com>2023-08-30 13:11:57 +1000
commit0f751e991d399769fb8d7800f7c4bccec2ca7f60 (patch)
tree34cd7838f7ebf51049816f9acb6a63cea175af06 /ProcessList.h
parent68f4f10f012d11bd57bb725fe4113b2af937fc1d (diff)
Introduce Row and Table classes for screens beyond top-processes
This commit refactors the Process and ProcessList structures such they each have a new parent - Row and Table, respectively. These new classes handle screen updates relating to anything that could be represented in tabular format, e.g. cgroups, filesystems, etc, without us having to reimplement the display logic repeatedly for each new entity.
Diffstat (limited to 'ProcessList.h')
-rw-r--r--ProcessList.h40
1 files changed, 8 insertions, 32 deletions
diff --git a/ProcessList.h b/ProcessList.h
index 0f0f7d51..9710a0a5 100644
--- a/ProcessList.h
+++ b/ProcessList.h
@@ -21,24 +21,12 @@ in the source distribution for its full text.
#include "Panel.h"
#include "Process.h"
#include "RichString.h"
-#include "Settings.h"
-#include "UsersTable.h"
-#include "Vector.h"
+#include "Table.h"
typedef struct ProcessList_ {
- struct Machine_* host;
+ Table super;
- Vector* processes; /* all known processes; sort order can vary and differ from display order */
- Vector* displayList; /* process tree flattened in display order (borrowed);
- updated in ProcessList_updateDisplayList when rebuilding panel */
- Hashtable* processTable; /* fast known process lookup by PID */
-
- bool needsSort;
-
- Panel* panel;
- int following;
- const char* incFilter;
Hashtable* pidMatchList;
unsigned int totalTasks;
@@ -49,35 +37,23 @@ typedef struct ProcessList_ {
/* Implemented by platforms */
ProcessList* ProcessList_new(Machine* host, Hashtable* pidMatchList);
-void ProcessList_delete(ProcessList* this);
+void ProcessList_delete(Object* cast);
void ProcessList_goThroughEntries(ProcessList* this);
void ProcessList_init(ProcessList* this, const ObjectClass* klass, Machine* host, Hashtable* pidMatchList);
void ProcessList_done(ProcessList* this);
-void ProcessList_setPanel(ProcessList* this, Panel* panel);
-
-void ProcessList_printHeader(const ProcessList* this, RichString* header);
-
-void ProcessList_add(ProcessList* this, Process* p);
-
-void ProcessList_updateDisplayList(ProcessList* this);
+extern const TableClass ProcessList_class;
-ProcessField ProcessList_keyAt(const ProcessList* this, int at);
-
-void ProcessList_expandTree(ProcessList* this);
-
-void ProcessList_collapseAllBranches(ProcessList* this);
-
-void ProcessList_rebuildPanel(ProcessList* this);
+static inline void ProcessList_add(ProcessList* this, Process* process) {
+ Table_add(&this->super, &process->super);
+}
Process* ProcessList_getProcess(ProcessList* this, pid_t pid, bool* preExisting, Process_New constructor);
-void ProcessList_scan(ProcessList* this);
-
static inline Process* ProcessList_findProcess(ProcessList* this, pid_t pid) {
- return (Process*) Hashtable_get(this->processTable, pid);
+ return (Process*) Table_findRow(&this->super, pid);
}
#endif

© 2014-2024 Faster IT GmbH | imprint | privacy policy