|
Packit |
79f644 |
/*
|
|
Packit |
79f644 |
* Copyright (C) 2007-2008 Guillaume Desmottes
|
|
Packit |
79f644 |
*
|
|
Packit |
79f644 |
* This library is free software; you can redistribute it and/or
|
|
Packit |
79f644 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
79f644 |
* License as published by the Free Software Foundation; either
|
|
Packit |
79f644 |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
79f644 |
*
|
|
Packit |
79f644 |
* This library is distributed in the hope that it will be useful,
|
|
Packit |
79f644 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
79f644 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
79f644 |
* Lesser General Public License for more details.
|
|
Packit |
79f644 |
*
|
|
Packit |
79f644 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
79f644 |
* License along with this library; if not, write to the Free Software
|
|
Packit |
79f644 |
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit |
79f644 |
*
|
|
Packit |
79f644 |
* Authors: Guillaume Desmottes <gdesmott@gnome.org>
|
|
Packit |
79f644 |
*/
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
#include "config.h"
|
|
Packit |
79f644 |
#include "tpaw-irc-server.h"
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
#include "tpaw-utils.h"
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
struct _TpawIrcServerPriv
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
gchar *address;
|
|
Packit |
79f644 |
guint port;
|
|
Packit |
79f644 |
gboolean ssl;
|
|
Packit |
79f644 |
};
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
/* properties */
|
|
Packit |
79f644 |
enum
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
PROP_ADDRESS = 1,
|
|
Packit |
79f644 |
PROP_PORT,
|
|
Packit |
79f644 |
PROP_SSL,
|
|
Packit |
79f644 |
LAST_PROPERTY
|
|
Packit |
79f644 |
};
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
/* signals */
|
|
Packit |
79f644 |
enum
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
MODIFIED,
|
|
Packit |
79f644 |
LAST_SIGNAL
|
|
Packit |
79f644 |
};
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
static guint signals[LAST_SIGNAL] = {0};
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
G_DEFINE_TYPE (TpawIrcServer, tpaw_irc_server, G_TYPE_OBJECT);
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
static void
|
|
Packit |
79f644 |
tpaw_irc_server_get_property (GObject *object,
|
|
Packit |
79f644 |
guint property_id,
|
|
Packit |
79f644 |
GValue *value,
|
|
Packit |
79f644 |
GParamSpec *pspec)
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
TpawIrcServer *self = TPAW_IRC_SERVER (object);
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
switch (property_id)
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
case PROP_ADDRESS:
|
|
Packit |
79f644 |
g_value_set_string (value, self->priv->address);
|
|
Packit |
79f644 |
break;
|
|
Packit |
79f644 |
case PROP_PORT:
|
|
Packit |
79f644 |
g_value_set_uint (value, self->priv->port);
|
|
Packit |
79f644 |
break;
|
|
Packit |
79f644 |
case PROP_SSL:
|
|
Packit |
79f644 |
g_value_set_boolean (value, self->priv->ssl);
|
|
Packit |
79f644 |
break;
|
|
Packit |
79f644 |
default:
|
|
Packit |
79f644 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
|
Packit |
79f644 |
break;
|
|
Packit |
79f644 |
}
|
|
Packit |
79f644 |
}
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
static void
|
|
Packit |
79f644 |
tpaw_irc_server_set_property (GObject *object,
|
|
Packit |
79f644 |
guint property_id,
|
|
Packit |
79f644 |
const GValue *value,
|
|
Packit |
79f644 |
GParamSpec *pspec)
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
TpawIrcServer *self = TPAW_IRC_SERVER (object);
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
switch (property_id)
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
case PROP_ADDRESS:
|
|
Packit |
79f644 |
if (tp_strdiff (self->priv->address, g_value_get_string (value)))
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
g_free (self->priv->address);
|
|
Packit |
79f644 |
self->priv->address = g_value_dup_string (value);
|
|
Packit |
79f644 |
g_signal_emit (object, signals[MODIFIED], 0);
|
|
Packit |
79f644 |
}
|
|
Packit |
79f644 |
break;
|
|
Packit |
79f644 |
case PROP_PORT:
|
|
Packit |
79f644 |
if (self->priv->port != g_value_get_uint (value))
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
self->priv->port = g_value_get_uint (value);
|
|
Packit |
79f644 |
g_signal_emit (object, signals[MODIFIED], 0);
|
|
Packit |
79f644 |
}
|
|
Packit |
79f644 |
break;
|
|
Packit |
79f644 |
case PROP_SSL:
|
|
Packit |
79f644 |
if (self->priv->ssl != g_value_get_boolean (value))
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
self->priv->ssl = g_value_get_boolean (value);
|
|
Packit |
79f644 |
g_signal_emit (object, signals[MODIFIED], 0);
|
|
Packit |
79f644 |
}
|
|
Packit |
79f644 |
break;
|
|
Packit |
79f644 |
default:
|
|
Packit |
79f644 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
|
Packit |
79f644 |
break;
|
|
Packit |
79f644 |
}
|
|
Packit |
79f644 |
}
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
static void
|
|
Packit |
79f644 |
tpaw_irc_server_finalize (GObject *object)
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
TpawIrcServer *self = TPAW_IRC_SERVER (object);
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
g_free (self->priv->address);
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
G_OBJECT_CLASS (tpaw_irc_server_parent_class)->finalize (object);
|
|
Packit |
79f644 |
}
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
static void
|
|
Packit |
79f644 |
tpaw_irc_server_init (TpawIrcServer *self)
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TPAW_TYPE_IRC_SERVER,
|
|
Packit |
79f644 |
TpawIrcServerPriv);
|
|
Packit |
79f644 |
}
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
static void
|
|
Packit |
79f644 |
tpaw_irc_server_class_init (TpawIrcServerClass *klass)
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
|
Packit |
79f644 |
GParamSpec *param_spec;
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
object_class->get_property = tpaw_irc_server_get_property;
|
|
Packit |
79f644 |
object_class->set_property = tpaw_irc_server_set_property;
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
g_type_class_add_private (object_class, sizeof (TpawIrcServerPriv));
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
object_class->finalize = tpaw_irc_server_finalize;
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
param_spec = g_param_spec_string (
|
|
Packit |
79f644 |
"address",
|
|
Packit |
79f644 |
"Server address",
|
|
Packit |
79f644 |
"The address of this server",
|
|
Packit |
79f644 |
NULL,
|
|
Packit |
79f644 |
G_PARAM_READWRITE |
|
|
Packit |
79f644 |
G_PARAM_STATIC_NAME |
|
|
Packit |
79f644 |
G_PARAM_STATIC_NICK |
|
|
Packit |
79f644 |
G_PARAM_STATIC_BLURB);
|
|
Packit |
79f644 |
g_object_class_install_property (object_class, PROP_ADDRESS, param_spec);
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
param_spec = g_param_spec_uint (
|
|
Packit |
79f644 |
"port",
|
|
Packit |
79f644 |
"Server port",
|
|
Packit |
79f644 |
"The port to use to connect on this server",
|
|
Packit |
79f644 |
1, G_MAXUINT16, 6667,
|
|
Packit |
79f644 |
G_PARAM_READWRITE |
|
|
Packit |
79f644 |
G_PARAM_STATIC_NAME |
|
|
Packit |
79f644 |
G_PARAM_STATIC_NICK |
|
|
Packit |
79f644 |
G_PARAM_STATIC_BLURB);
|
|
Packit |
79f644 |
g_object_class_install_property (object_class, PROP_PORT, param_spec);
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
param_spec = g_param_spec_boolean (
|
|
Packit |
79f644 |
"ssl",
|
|
Packit |
79f644 |
"SSL",
|
|
Packit |
79f644 |
"If this server needs SSL connection",
|
|
Packit |
79f644 |
FALSE,
|
|
Packit |
79f644 |
G_PARAM_READWRITE |
|
|
Packit |
79f644 |
G_PARAM_STATIC_NAME |
|
|
Packit |
79f644 |
G_PARAM_STATIC_NICK |
|
|
Packit |
79f644 |
G_PARAM_STATIC_BLURB);
|
|
Packit |
79f644 |
g_object_class_install_property (object_class, PROP_SSL, param_spec);
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
/**
|
|
Packit |
79f644 |
* TpawIrcServer::modified:
|
|
Packit |
79f644 |
* @server: the object that received the signal
|
|
Packit |
79f644 |
*
|
|
Packit |
79f644 |
* Emitted when a property of the server is modified.
|
|
Packit |
79f644 |
*
|
|
Packit |
79f644 |
*/
|
|
Packit |
79f644 |
signals[MODIFIED] = g_signal_new (
|
|
Packit |
79f644 |
"modified",
|
|
Packit |
79f644 |
G_OBJECT_CLASS_TYPE (object_class),
|
|
Packit |
79f644 |
G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
|
|
Packit |
79f644 |
0,
|
|
Packit |
79f644 |
NULL, NULL,
|
|
Packit |
79f644 |
g_cclosure_marshal_generic,
|
|
Packit |
79f644 |
G_TYPE_NONE, 0);
|
|
Packit |
79f644 |
}
|
|
Packit |
79f644 |
|
|
Packit |
79f644 |
/**
|
|
Packit |
79f644 |
* tpaw_irc_server_new:
|
|
Packit |
79f644 |
* @address: the address
|
|
Packit |
79f644 |
* @port: the port
|
|
Packit |
79f644 |
* @ssl: %TRUE if the server needs a SSL connection
|
|
Packit |
79f644 |
*
|
|
Packit |
79f644 |
* Creates a new #TpawIrcServer
|
|
Packit |
79f644 |
*
|
|
Packit |
79f644 |
* Returns: a new #TpawIrcServer
|
|
Packit |
79f644 |
*/
|
|
Packit |
79f644 |
TpawIrcServer *
|
|
Packit |
79f644 |
tpaw_irc_server_new (const gchar *address,
|
|
Packit |
79f644 |
guint port,
|
|
Packit |
79f644 |
gboolean ssl)
|
|
Packit |
79f644 |
{
|
|
Packit |
79f644 |
return g_object_new (TPAW_TYPE_IRC_SERVER,
|
|
Packit |
79f644 |
"address", address,
|
|
Packit |
79f644 |
"port", port,
|
|
Packit |
79f644 |
"ssl", ssl,
|
|
Packit |
79f644 |
NULL);
|
|
Packit |
79f644 |
}
|