createrepo_c library
1.2.1
C library for metadata manipulation
Toggle main menu visibility
Loading...
Searching...
No Matches
dumper_thread.h
1
/* createrepo_c - Library of routines for manipulation with repodata
2
* Copyright (C) 2014 Tomas Mlcoch
3
*
4
* This program is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU General Public License
6
* as published by the Free Software Foundation; either version 2
7
* of the License, or (at your option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
17
* USA.
18
*/
19
20
#ifndef __C_CREATEREPOLIB_DUMPER_THREAD_H__
21
#define __C_CREATEREPOLIB_DUMPER_THREAD_H__
22
23
#ifdef __cplusplus
24
extern
"C"
{
25
#endif
26
27
#include <glib.h>
28
#include <rpm/rpmlib.h>
29
#include "load_metadata.h"
30
#include "locate_metadata.h"
31
#include "misc.h"
32
#include "package.h"
33
#include "sqlite.h"
34
#include "xml_file.h"
35
40
41
struct
PoolTask
{
42
long
id;
// ID of the task
43
long
media_id;
// ID of media in split mode, 0 if not in split mode
44
char
* full_path;
// Complete path - /foo/bar/packages/foo.rpm
45
char
* filename;
// Just filename - foo.rpm
46
char
* path;
// Just path - /foo/bar/packages
47
};
48
49
struct
DuplicateLocation
{
50
gchar *location;
51
cr_Package
*pkg;
52
};
53
54
struct
UserData
{
55
cr_XmlFile
*pri_f;
// Opened compressed primary.xml.*
56
cr_XmlFile
*fil_f;
// Opened compressed filelists.xml.*
57
cr_XmlFile
*fex_f;
// Opened compressed filelists-ext.xml.*
58
cr_XmlFile
*oth_f;
// Opened compressed other.xml.*
59
cr_SqliteDb
*pri_db;
// Primary db
60
cr_SqliteDb
*fil_db;
// Filelists db
61
cr_SqliteDb
*fex_db;
// Filelists-ext db
62
cr_SqliteDb
*oth_db;
// Other db
63
cr_XmlFile
*pri_zck;
// Opened compressed primary.xml.zck
64
cr_XmlFile
*fil_zck;
// Opened compressed filelists.xml.zck
65
cr_XmlFile
*fex_zck;
// Opened compressed filelists-ext.xml.zck
66
cr_XmlFile
*oth_zck;
// Opened compressed other.xml.zck
67
char
*prev_srpm;
// Previous srpm
68
char
*cur_srpm;
// Current srpm
69
int
changelog_limit;
// Max number of changelogs for a package
70
const
char
*location_base;
// Base location url
71
int
repodir_name_len;
// Len of path to repo /foo/bar/repodata
72
// This part |<----->|
73
const
char
*checksum_type_str;
// Name of selected checksum
74
cr_ChecksumType
checksum_type;
// Constant representing selected checksum
75
const
char
*checksum_cachedir;
// Dir with cached checksums
76
gboolean skip_symlinks;
// Skip symlinks
77
gboolean filelists_ext;
// Include hashes (and create filelists-ext.*)
78
long
task_count;
// Total number of tasks to process
79
long
package_count;
// Total number of packages processed
80
long
skipped_count;
// Total number of explicitly skipped packages
81
82
// Duplicate package error checking
83
GMutex mutex_nevra_table;
// Mutex for the table of NEVRAs
84
GHashTable *nevra_table;
// Table of NEVRAs mapped to packages and their locations
85
86
// Update stuff
87
gboolean skip_stat;
// Skip stat() while updating
88
cr_Metadata
*old_metadata;
// Loaded metadata
89
GMutex mutex_old_md;
// Mutex for accessing old metadata
90
91
// Thread serialization
92
GMutex mutex_pri;
// Mutex for primary metadata
93
GMutex mutex_fil;
// Mutex for filelists metadata
94
GMutex mutex_fex;
// Mutex for filelists-ext metadata
95
GMutex mutex_oth;
// Mutex for other metadata
96
GCond cond_pri;
// Condition for primary metadata
97
GCond cond_fil;
// Condition for filelists metadata
98
GCond cond_fex;
// Condition for filelists-ext metadata
99
GCond cond_oth;
// Condition for other metadata
100
volatile
long
id_pri;
// ID of task on turn (write primary metadata)
101
volatile
long
id_fil;
// ID of task on turn (write filelists metadata)
102
volatile
long
id_fex;
// ID of task on turn (write filelists-ext metadata)
103
volatile
long
id_oth;
// ID of task on turn (write other metadata)
104
105
// Buffering
106
GQueue *buffer;
// Buffer for done tasks
107
GMutex mutex_buffer;
// Mutex for accessing the buffer
108
109
// Delta generation
110
gboolean deltas;
// Are deltas enabled?
111
gint64 max_delta_rpm_size;
// Max size of an rpm that to run
112
// deltarpm against
113
GMutex mutex_deltatargetpackages;
// Mutex
114
GSList *deltatargetpackages;
// List of cr_DeltaTargetPackages
115
116
// Location href modifiers
117
gint cut_dirs;
// Ignore *num* of directory components
118
// in location href path
119
gchar *location_prefix;
// Append this prefix into location_href
120
// during repodata generation
121
gboolean had_errors;
// Any errors encountered?
122
123
FILE *output_pkg_list;
// File where a list of read packages is written
124
GMutex mutex_output_pkg_list;
// Mutex for output_pkg_list file
125
GArray *delayed_write;
// Dump these files once all packages are loaded
126
};
127
128
129
void
130
cr_dumper_thread(gpointer data, gpointer user_data);
131
132
133
void
134
cr_delayed_dump_set(gpointer user_data);
135
136
void
137
cr_delayed_dump_run(gpointer user_data);
138
140
141
#ifdef __cplusplus
142
}
143
#endif
144
145
#endif
/* __C_CREATEREPOLIB_DUMPER_THREAD_H__ */
cr_ChecksumType
cr_ChecksumType
Definition
checksum.h:43
cr_Metadata
struct _cr_Metadata cr_Metadata
Definition
load_metadata.h:86
DuplicateLocation
Definition
dumper_thread.h:49
PoolTask
Definition
dumper_thread.h:41
UserData
Definition
dumper_thread.h:54
cr_Package
Definition
package.h:84
cr_SqliteDb
Definition
sqlite.h:88
cr_XmlFile
Definition
xml_file.h:50
src
dumper_thread.h
Generated by
1.17.0