1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
/*
* GNOME Logs - View and search logs
* Copyright (C) 2015 Lars Uebernickel <lars@uebernic.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GL_JOURNAL_MODEL_H
#define GL_JOURNAL_MODEL_H
#include <gio/gio.h>
#include "gl-application.h"
#include "gl-journal.h"
typedef enum
{
GL_QUERY_SEARCH_TYPE_SUBSTRING,
GL_QUERY_SEARCH_TYPE_EXACT
} GlQuerySearchType;
typedef enum
{
GL_ROW_ENTRY_TYPE_UNCOMPRESSED,
GL_ROW_ENTRY_TYPE_COMPRESSED,
GL_ROW_ENTRY_TYPE_HEADER
} GlRowEntryType;
/* Resultant query passed to journal model from eventviewlist */
typedef struct GlQuery
{
GPtrArray *queryitems; /* array of GlQueryItem structs */
GlQuerySearchType search_type; /* indicates if search field is passed as exact match */
GlSortOrder order; /* whether to iterate through journal in ascending or descending timestamp order */
guint64 start_timestamp;
guint64 end_timestamp;
} GlQuery;
#define GL_TYPE_ROW_ENTRY gl_row_entry_get_type()
G_DECLARE_FINAL_TYPE (GlRowEntry, gl_row_entry, GL, ROW_ENTRY, GObject)
#define GL_TYPE_JOURNAL_MODEL gl_journal_model_get_type()
G_DECLARE_FINAL_TYPE (GlJournalModel, gl_journal_model, GL, JOURNAL_MODEL, GObject)
GlJournalModel * gl_journal_model_new (void);
GlQuery * gl_query_new (void);
GlRowEntry * gl_row_entry_new (void);
void gl_journal_model_take_query (GlJournalModel *model,
GlQuery *query);
void gl_query_add_match (GlQuery *query,
const gchar *field_name,
const gchar *field_value,
GlQuerySearchType search_type);
void gl_query_set_journal_timestamp_range (GlQuery *query,
guint64 start_timestamp,
guint64 end_timestamp);
void gl_journal_model_set_matches (GlJournalModel *model,
const gchar * const *matches);
gboolean gl_journal_model_get_loading (GlJournalModel *model);
void gl_journal_model_fetch_more_entries (GlJournalModel *model,
gboolean all);
void gl_journal_model_load_journal (GlJournalModel *model,
GlJournal *journal);
GArray * gl_journal_model_get_boot_ids (GlJournalModel *model);
gchar * gl_journal_model_get_boot_time (GlJournalModel *model,
const gchar *boot_match);
void gl_query_set_search_type (GlQuery *query,
GlQuerySearchType search_type);
void gl_query_set_sort_order (GlQuery *query,
GlSortOrder order);
GlJournalEntry * gl_row_entry_get_journal_entry (GlRowEntry *entry);
GlRowEntryType gl_row_entry_get_row_type (GlRowEntry *entry);
guint gl_row_entry_get_compressed_entries (GlRowEntry *entry);
#endif
|