X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Flttng-viewer.h;h=1977a43b460852627bec6b8a6c1444e2da29ad83;hb=157df58664846e22bdeea84dfcf717cb43360b3f;hp=f397de7e5ae6fa10f7d516093582c2c5d4761575;hpb=d3e2ba59faddb31870e2ce29b6a881f7ad5ad883;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/lttng-viewer.h b/src/bin/lttng-relayd/lttng-viewer.h index f397de7e5..1977a43b4 100644 --- a/src/bin/lttng-relayd/lttng-viewer.h +++ b/src/bin/lttng-relayd/lttng-viewer.h @@ -1,24 +1,30 @@ +#ifndef LTTNG_VIEWER_H +#define LTTNG_VIEWER_H + /* * Copyright (C) 2013 - Julien Desfossez + * Mathieu Desnoyers * David Goulet * - * 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. + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * 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. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * 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. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ -#ifndef LTTNG_VIEWER_H -#define LTTNG_VIEWER_H - #include #define LTTNG_VIEWER_PATH_MAX 4096 @@ -28,7 +34,7 @@ /* Flags in reply to get_next_index and get_packet. */ /* New metadata is required to read this packet. */ #define LTTNG_VIEWER_FLAG_NEW_METADATA (1 << 0) -/* New stream got added to the trace */ +/* New stream got added to the trace. */ #define LTTNG_VIEWER_FLAG_NEW_STREAM (1 << 1) enum lttng_viewer_command { @@ -54,12 +60,14 @@ enum lttng_viewer_next_index_return_code { VIEWER_INDEX_HUP = 3, /* Index closed (trace destroyed). */ VIEWER_INDEX_ERR = 4, /* Unknow error. */ VIEWER_INDEX_INACTIVE = 5, /* Inactive stream beacon. */ + VIEWER_INDEX_EOF = 6, /* End of index file. */ }; enum lttng_viewer_get_packet_return_code { VIEWER_GET_PACKET_OK = 1, VIEWER_GET_PACKET_RETRY = 2, VIEWER_GET_PACKET_ERR = 3, + VIEWER_GET_PACKET_EOF = 4, }; enum lttng_viewer_get_metadata_return_code { @@ -74,24 +82,27 @@ enum lttng_viewer_connection_type { }; enum lttng_viewer_seek { - VIEWER_SEEK_BEGINNING = 1, /* Receive the trace packets from the beginning. */ - VIEWER_SEEK_LAST = 2, /* Receive the trace packets from now. */ + /* Receive the trace packets from the beginning. */ + VIEWER_SEEK_BEGINNING = 1, + /* Receive the trace packets from now. */ + VIEWER_SEEK_LAST = 2, }; struct lttng_viewer_session { uint64_t id; - char hostname[LTTNG_VIEWER_HOST_NAME_MAX]; - char session_name[LTTNG_VIEWER_NAME_MAX]; uint32_t live_timer; uint32_t clients; + uint32_t streams; + char hostname[LTTNG_VIEWER_HOST_NAME_MAX]; + char session_name[LTTNG_VIEWER_NAME_MAX]; } __attribute__((__packed__)); struct lttng_viewer_stream { uint64_t id; uint64_t ctf_trace_id; + int metadata_flag; char path_name[LTTNG_VIEWER_PATH_MAX]; char channel_name[LTTNG_VIEWER_NAME_MAX]; - int metadata_flag; } __attribute__((__packed__)); struct lttng_viewer_cmd { @@ -104,10 +115,11 @@ struct lttng_viewer_cmd { * CONNECT payload. */ struct lttng_viewer_connect { + /* session ID assigned by the relay for command connections */ + uint64_t viewer_session_id; uint32_t major; uint32_t minor; uint32_t type; /* enum lttng_viewer_connection_type */ - uint64_t viewer_session_id; /* session ID assigned by the relay for command connections */ } __attribute__((__packed__)); /* @@ -123,14 +135,16 @@ struct lttng_viewer_list_sessions { */ struct lttng_viewer_attach_session_request { uint64_t session_id; - uint32_t seek; /* enum lttng_viewer_seek */ uint64_t offset; /* unused for now */ + uint32_t seek; /* enum lttng_viewer_seek */ } __attribute__((__packed__)); struct lttng_viewer_attach_session_response { - uint32_t status; /* enum lttng_viewer_attach_return_code */ + /* enum lttng_viewer_attach_return_code */ + uint32_t status; uint32_t streams_count; - char stream_list[]; /* struct lttng_viewer_stream */ + /* struct lttng_viewer_stream */ + char stream_list[]; } __attribute__((__packed__)); /* @@ -141,7 +155,6 @@ struct lttng_viewer_get_next_index { } __attribute__ ((__packed__)); struct lttng_viewer_index { - uint32_t status; /* enum lttng_viewer_next_index_return_code */ uint64_t offset; uint64_t packet_size; uint64_t content_size; @@ -149,6 +162,8 @@ struct lttng_viewer_index { uint64_t timestamp_end; uint64_t events_discarded; uint64_t stream_id; + /* enum lttng_viewer_next_index_return_code */ + uint32_t status; uint32_t flags; /* LTTNG_VIEWER_FLAG_* */ } __attribute__ ((__packed__)); @@ -162,7 +177,8 @@ struct lttng_viewer_get_packet { } __attribute__((__packed__)); struct lttng_viewer_trace_packet { - uint32_t status; /* enum lttng_viewer_get_packet_return_code */ + /* enum lttng_viewer_get_packet_return_code */ + uint32_t status; uint32_t len; uint32_t flags; /* LTTNG_VIEWER_FLAG_* */ char data[]; @@ -176,8 +192,9 @@ struct lttng_viewer_get_metadata { } __attribute__((__packed__)); struct lttng_viewer_metadata_packet { - uint32_t status; /* enum lttng_viewer_get_metadata_return_code */ uint64_t len; + /* enum lttng_viewer_get_metadata_return_code */ + uint32_t status; char data[]; } __attribute__((__packed__));