/* * This file is part of Cockpit. * * Copyright (C) 2014 Red Hat, Inc. * * Cockpit is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * Cockpit 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Cockpit; If not, see . */ #ifndef __COCKPIT_CHANNEL_H__ #define __COCKPIT_CHANNEL_H__ #include #include #include "cockpitconnect.h" #include "common/cockpittransport.h" G_BEGIN_DECLS #define COCKPIT_TYPE_CHANNEL (cockpit_channel_get_type ()) #define COCKPIT_CHANNEL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), COCKPIT_TYPE_CHANNEL, CockpitChannel)) #define COCKPIT_IS_CHANNEL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), COCKPIT_TYPE_CHANNEL)) #define COCKPIT_CHANNEL_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), COCKPIT_TYPE_CHANNEL, CockpitChannelClass)) #define COCKPIT_CHANNEL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), COCKPIT_TYPE_CHANNEL, CockpitChannelClass)) typedef struct _CockpitChannel CockpitChannel; typedef struct _CockpitChannelClass CockpitChannelClass; typedef struct _CockpitChannelPrivate CockpitChannelPrivate; struct _CockpitChannel { GObject parent; CockpitChannelPrivate *priv; }; struct _CockpitChannelClass { GObjectClass parent_class; /* signal */ void (* closed) (CockpitChannel *channel, const gchar *problem); /* vfuncs */ void (* prepare) (CockpitChannel *channel); void (* recv) (CockpitChannel *channel, GBytes *message); gboolean (* control) (CockpitChannel *channel, const gchar *command, JsonObject *options); void (* close) (CockpitChannel *channel, const gchar *problem); }; GType cockpit_channel_get_type (void) G_GNUC_CONST; void cockpit_channel_prepare (CockpitChannel *self); void cockpit_channel_close (CockpitChannel *self, const gchar *problem); void cockpit_channel_fail (CockpitChannel *self, const gchar *problem, const gchar *format, ...) G_GNUC_PRINTF(3, 4); const gchar * cockpit_channel_get_id (CockpitChannel *self); /* Used by implementations */ void cockpit_channel_control (CockpitChannel *self, const gchar *command, JsonObject *message); void cockpit_channel_ready (CockpitChannel *self, JsonObject *message); void cockpit_channel_send (CockpitChannel *self, GBytes *payload, gboolean valid_utf8); JsonObject * cockpit_channel_get_options (CockpitChannel *self); JsonObject * cockpit_channel_close_options (CockpitChannel *self); GSocketAddress * cockpit_channel_parse_address (CockpitChannel *self, gchar **possible_name); void cockpit_channel_internal_address (const gchar *name, GSocketAddress *address); gboolean cockpit_channel_remove_internal_address (const gchar *name); CockpitConnectable * cockpit_channel_parse_stream (CockpitChannel *self); G_END_DECLS #endif /* __COCKPIT_CHANNEL_H__ */