Commit | Line | Data |
---|---|---|
6dc3064a DG |
1 | /* |
2 | * Copyright (C) 2013 - David Goulet <dgoulet@efficios.com> | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or modify it | |
5 | * under the terms of the GNU General Public License, version 2 only, as | |
6 | * published by the Free Software Foundation. | |
7 | * | |
8 | * This program is distributed in the hope that it will be useful, but WITHOUT | |
9 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
10 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
11 | * more details. | |
12 | * | |
13 | * You should have received a copy of the GNU General Public License along with | |
14 | * this program; if not, write to the Free Software Foundation, Inc., 51 | |
15 | * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
16 | */ | |
17 | ||
18 | #ifndef SNAPSHOT_H | |
19 | #define SNAPSHOT_H | |
20 | ||
21 | #include <limits.h> | |
22 | #include <stdint.h> | |
23 | ||
24 | #include <common/common.h> | |
25 | #include <common/hashtable/hashtable.h> | |
26 | #include <common/uri.h> | |
27 | ||
28 | #include "consumer.h" | |
29 | ||
30 | struct consumer_output; | |
31 | ||
32 | struct snapshot_output { | |
33 | uint32_t id; | |
34 | uint64_t max_size; | |
35 | char name[NAME_MAX]; | |
36 | struct consumer_output *consumer; | |
37 | int kernel_sockets_copied; | |
38 | int ust_sockets_copied; | |
10a50311 JD |
39 | /* |
40 | * Contains the string with "<date>-<time>" for when the snapshot command | |
41 | * is triggered. This is to make sure every streams will use the same time | |
42 | * for the directory output. | |
43 | */ | |
44 | char datetime[16]; | |
6dc3064a DG |
45 | |
46 | /* Indexed by ID. */ | |
47 | struct lttng_ht_node_ulong node; | |
48 | }; | |
49 | ||
50 | struct snapshot { | |
51 | unsigned long next_output_id; | |
52 | size_t nb_output; | |
53 | struct lttng_ht *output_ht; | |
54 | }; | |
55 | ||
56 | /* Snapshot object. */ | |
57 | struct snapshot *snapshot_alloc(void); | |
58 | void snapshot_destroy(struct snapshot *obj); | |
59 | int snapshot_init(struct snapshot *obj); | |
60 | void snapshot_delete_output(struct snapshot *snapshot, | |
61 | struct snapshot_output *output); | |
62 | void snapshot_add_output(struct snapshot *snapshot, | |
63 | struct snapshot_output *output); | |
64 | ||
65 | /* Snapshot output object. */ | |
66 | struct snapshot_output *snapshot_output_alloc(void); | |
67 | void snapshot_output_destroy(struct snapshot_output *obj); | |
68 | int snapshot_output_init(uint64_t max_size, const char *name, | |
69 | const char *ctrl_url, const char *data_url, | |
70 | struct consumer_output *consumer, struct snapshot_output *output, | |
71 | struct snapshot *snapshot); | |
27babd3a DG |
72 | int snapshot_output_init_with_uri(uint64_t max_size, const char *name, |
73 | struct lttng_uri *uris, size_t nb_uri, | |
74 | struct consumer_output *consumer, struct snapshot_output *output, | |
75 | struct snapshot *snapshot); | |
6dc3064a DG |
76 | struct snapshot_output *snapshot_find_output_by_id(uint32_t id, |
77 | struct snapshot *snapshot); | |
eb240553 DG |
78 | struct snapshot_output *snapshot_find_output_by_name(const char *name, |
79 | struct snapshot *snapshot); | |
6dc3064a DG |
80 | |
81 | #endif /* SNAPSHOT_H */ |