1 /* GSequencer - Advanced GTK Sequencer
2  * Copyright (C) 2005-2017 Joël Krähemann
3  *
4  * This file is part of GSequencer.
5  *
6  * GSequencer is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Affero General Public License as
8  * published by the Free Software Foundation, either version 3 of the
9  * License, or (at your option) any later version.
10  *
11  * GSequencer is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU Affero General Public License for more details.
15  *
16  * You should have received a copy of the GNU Affero General Public License
17  * along with GSequencer.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #include <ags/server/ags_server_status.h>
21 
22 #include <ags/object/ags_connectable.h>
23 
24 void ags_server_status_class_init(AgsServerStatusClass *server_status);
25 void ags_server_status_connectable_interface_init(AgsConnectableInterface *connectable);
26 void ags_server_status_init(AgsServerStatus *server_status);
27 void ags_server_status_set_property(GObject *gobject,
28 				    guint prop_id,
29 				    const GValue *value,
30 				    GParamSpec *param_spec);
31 void ags_server_status_get_property(GObject *gobject,
32 				    guint prop_id,
33 				    GValue *value,
34 				    GParamSpec *param_spec);
35 void ags_server_status_connect(AgsConnectable *connectable);
36 void ags_server_status_disconnect(AgsConnectable *connectable);
37 void ags_server_status_finalize(GObject *gobject);
38 
39 enum{
40   PROP_0,
41   PROP_MAXIMUM_CONNECTIONS,
42   PROP_CONNECTION_COUNT,
43 };
44 
45 static gpointer ags_server_status_parent_class = NULL;
46 
47 GType
ags_server_status_get_type()48 ags_server_status_get_type()
49 {
50   static volatile gsize g_define_type_id__volatile = 0;
51 
52   if(g_once_init_enter (&g_define_type_id__volatile)){
53     GType ags_type_server_status = 0;
54 
55     static const GTypeInfo ags_server_status_info = {
56       sizeof (AgsServerStatusClass),
57       NULL, /* base_init */
58       NULL, /* base_finalize */
59       (GClassInitFunc) ags_server_status_class_init,
60       NULL, /* class_finalize */
61       NULL, /* class_data */
62       sizeof (AgsServerStatus),
63       0,    /* n_preallocs */
64       (GInstanceInitFunc) ags_server_status_init,
65     };
66 
67     static const GInterfaceInfo ags_connectable_interface_info = {
68       (GInterfaceInitFunc) ags_server_status_connectable_interface_init,
69       NULL, /* interface_finalize */
70       NULL, /* interface_data */
71     };
72 
73     ags_type_server_status = g_type_register_static(G_TYPE_OBJECT,
74 						    "AgsServerStatus",
75 						    &ags_server_status_info,
76 						    0);
77 
78     g_type_add_interface_static(ags_type_server_status,
79 				AGS_TYPE_CONNECTABLE,
80 				&ags_connectable_interface_info);
81 
82     g_once_init_leave(&g_define_type_id__volatile, ags_type_server_status);
83   }
84 
85   return g_define_type_id__volatile;
86 }
87 
88 void
ags_server_status_class_init(AgsServerStatusClass * server_status)89 ags_server_status_class_init(AgsServerStatusClass *server_status)
90 {
91   GObjectClass *gobject;
92   GParamSpec *param_spec;
93 
94   ags_server_status_parent_class = g_type_class_peek_parent(server_status);
95 
96   /* GObjectClass */
97   gobject = (GObjectClass *) server_status;
98 
99   gobject->set_property = ags_server_status_set_property;
100   gobject->get_property = ags_server_status_get_property;
101 
102   gobject->finalize = ags_server_status_finalize;
103 }
104 
105 void
ags_server_status_connectable_interface_init(AgsConnectableInterface * connectable)106 ags_server_status_connectable_interface_init(AgsConnectableInterface *connectable)
107 {
108   connectable->connect = ags_server_status_connect;
109   connectable->disconnect = ags_server_status_disconnect;
110 }
111 
112 void
ags_server_status_init(AgsServerStatus * server_status)113 ags_server_status_init(AgsServerStatus *server_status)
114 {
115   server_status->flags = 0;
116 }
117 
118 void
ags_server_status_set_property(GObject * gobject,guint prop_id,const GValue * value,GParamSpec * param_spec)119 ags_server_status_set_property(GObject *gobject,
120 			       guint prop_id,
121 			       const GValue *value,
122 			       GParamSpec *param_spec)
123 {
124   AgsServerStatus *server_status;
125 
126   server_status = AGS_SERVER_STATUS(gobject);
127 
128   switch(prop_id){
129   default:
130     G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, param_spec);
131     break;
132   }
133 }
134 
135 void
ags_server_status_get_property(GObject * gobject,guint prop_id,GValue * value,GParamSpec * param_spec)136 ags_server_status_get_property(GObject *gobject,
137 			       guint prop_id,
138 			       GValue *value,
139 			       GParamSpec *param_spec)
140 {
141   AgsServerStatus *server_status;
142 
143   server_status = AGS_SERVER_STATUS(gobject);
144 
145   switch(prop_id){
146   default:
147     G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, param_spec);
148     break;
149   }
150 }
151 
152 void
ags_server_status_connect(AgsConnectable * connectable)153 ags_server_status_connect(AgsConnectable *connectable)
154 {
155   /* empty */
156 }
157 
158 void
ags_server_status_disconnect(AgsConnectable * connectable)159 ags_server_status_disconnect(AgsConnectable *connectable)
160 {
161   /* empty */
162 }
163 
164 void
ags_server_status_finalize(GObject * gobject)165 ags_server_status_finalize(GObject *gobject)
166 {
167   AgsServerStatus *server_status;
168 
169   server_status = AGS_SERVER_STATUS(gobject);
170 
171   /* call parent */
172   G_OBJECT_CLASS(ags_server_status_parent_class)->finalize(gobject);
173 }
174 
175 /**
176  * ags_server_status_new:
177  *
178  * Instantiate #AgsServerStatus.
179  *
180  * Returns: a new #AgsServerStatus
181  *
182  * Since: 3.0.0
183  */
184 AgsServerStatus*
ags_server_status_new()185 ags_server_status_new()
186 {
187   AgsServerStatus *server_status;
188 
189   server_status = (AgsServerStatus *) g_object_new(AGS_TYPE_SERVER_STATUS,
190 						   NULL);
191 
192   return(server_status);
193 }
194