X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Findex.h;h=4364f12ffdb096179e6e736dd821388c4c4bb028;hp=e882ed97d2552b71225fee0517698fcdf0143475;hb=3a5328d20432d9782b24ddeaaa093ac6219d6e29;hpb=7591bab11eceedc6a0d1e02fd6f85592267a63b5 diff --git a/src/bin/lttng-relayd/index.h b/src/bin/lttng-relayd/index.h index e882ed97d..4364f12ff 100644 --- a/src/bin/lttng-relayd/index.h +++ b/src/bin/lttng-relayd/index.h @@ -2,22 +2,12 @@ #define _RELAY_INDEX_H /* - * Copyright (C) 2013 - Julien Desfossez - * David Goulet - * 2015 - Mathieu Desnoyers + * Copyright (C) 2013 Julien Desfossez + * Copyright (C) 2013 David Goulet + * Copyright (C) 2015 Mathieu Desnoyers * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License, version 2 only, as - * published by the Free Software Foundation. + * SPDX-License-Identifier: GPL-2.0-only * - * 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, write to the Free Software Foundation, Inc., 51 - * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include @@ -26,27 +16,28 @@ #include #include -#include "stream-fd.h" - struct relay_stream; +struct relay_connection; +struct lttcomm_relayd_index; struct relay_index { /* * index lock nests inside stream lock. */ - pthread_mutex_t reflock; /* Protects refcounting. */ struct urcu_ref ref; /* Reference from getters. */ struct relay_stream *stream; /* Back ref to stream */ pthread_mutex_t lock; /* - * FD on which to write the index data. May differ from - * stream->index_fd due to tracefile rotation. + * index file on which to write the index data. May differ from + * stream->index_file due to tracefile rotation. */ - struct stream_fd *index_fd; + struct lttng_index_file *index_file; /* Index packet data. This is the data that is written on disk. */ struct ctf_packet_index index_data; + /* Data + padding size of this packet, filled by the data thread. */ + uint64_t total_size; bool has_index_data; bool flushed; @@ -64,12 +55,19 @@ struct relay_index { struct relay_index *relay_index_get_by_id_or_create(struct relay_stream *stream, uint64_t net_seq_num); void relay_index_put(struct relay_index *index); -int relay_index_set_fd(struct relay_index *index, struct stream_fd *index_fd, - uint64_t data_offset); +int relay_index_set_file(struct relay_index *index, + struct lttng_index_file *index_file, + uint64_t data_offset); int relay_index_set_data(struct relay_index *index, - const struct ctf_packet_index *data); + const struct ctf_packet_index *data); int relay_index_try_flush(struct relay_index *index); void relay_index_close_all(struct relay_stream *stream); +void relay_index_close_partial_fd(struct relay_stream *stream); +uint64_t relay_index_find_last(struct relay_stream *stream); +int relay_index_switch_all_files(struct relay_stream *stream); +int relay_index_set_control_data(struct relay_index *index, + const struct lttcomm_relayd_index *data, + unsigned int minor_version); #endif /* _RELAY_INDEX_H */