1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19  
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 /*
25  * Conversion parameters:
26  * inFile  = GSrvTarget.html
27  * outPack = gio
28  * outFile = SrvTarget
29  * strct   = GSrvTarget
30  * realStrct=
31  * ctorStrct=
32  * clss    = SrvTarget
33  * interf  = 
34  * class Code: No
35  * interface Code: No
36  * template for:
37  * extend  = 
38  * implements:
39  * prefixes:
40  * 	- g_srv_target_
41  * omit structs:
42  * omit prefixes:
43  * omit code:
44  * omit signals:
45  * imports:
46  * 	- glib.Str
47  * 	- glib.ListG
48  * structWrap:
49  * 	- GList* -> ListG
50  * 	- GSrvTarget* -> SrvTarget
51  * module aliases:
52  * local aliases:
53  * overrides:
54  */
55 
56 module gio.SrvTarget;
57 
58 public  import gtkc.giotypes;
59 
60 private import gtkc.gio;
61 private import glib.ConstructionException;
62 private import gobject.ObjectG;
63 
64 
65 private import glib.Str;
66 private import glib.ListG;
67 
68 
69 
70 private import gobject.Boxed;
71 
72 /**
73  * SRV (service) records are used by some network protocols to provide
74  * service-specific aliasing and load-balancing. For example, XMPP
75  * (Jabber) uses SRV records to locate the XMPP server for a domain;
76  * rather than connecting directly to "example.com" or assuming a
77  * specific server hostname like "xmpp.example.com", an XMPP client
78  * would look up the "xmpp-client" SRV record for "example.com", and
79  * then connect to whatever host was pointed to by that record.
80  *
81  * You can use g_resolver_lookup_service() or
82  * g_resolver_lookup_service_async() to find the GSrvTargets
83  * for a given service. However, if you are simply planning to connect
84  * to the remote service, you can use GNetworkService's
85  * GSocketConnectable interface and not need to worry about
86  * GSrvTarget at all.
87  */
88 public class SrvTarget : Boxed
89 {
90 	
91 	/** the main Gtk struct */
92 	protected GSrvTarget* gSrvTarget;
93 	
94 	
95 	public GSrvTarget* getSrvTargetStruct()
96 	{
97 		return gSrvTarget;
98 	}
99 	
100 	
101 	/** the main Gtk struct as a void* */
102 	protected void* getStruct()
103 	{
104 		return cast(void*)gSrvTarget;
105 	}
106 	
107 	/**
108 	 * Sets our main struct and passes it to the parent class
109 	 */
110 	public this (GSrvTarget* gSrvTarget)
111 	{
112 		this.gSrvTarget = gSrvTarget;
113 	}
114 	
115 	/**
116 	 */
117 	
118 	/**
119 	 * Creates a new GSrvTarget with the given parameters.
120 	 * You should not need to use this; normally GSrvTargets are
121 	 * created by GResolver.
122 	 * Since 2.22
123 	 * Params:
124 	 * hostname = the host that the service is running on
125 	 * port = the port that the service is running on
126 	 * priority = the target's priority
127 	 * weight = the target's weight
128 	 * Throws: ConstructionException GTK+ fails to create the object.
129 	 */
130 	public this (string hostname, ushort port, ushort priority, ushort weight)
131 	{
132 		// GSrvTarget * g_srv_target_new (const gchar *hostname,  guint16 port,  guint16 priority,  guint16 weight);
133 		auto p = g_srv_target_new(Str.toStringz(hostname), port, priority, weight);
134 		if(p is null)
135 		{
136 			throw new ConstructionException("null returned by g_srv_target_new(Str.toStringz(hostname), port, priority, weight)");
137 		}
138 		this(cast(GSrvTarget*) p);
139 	}
140 	
141 	/**
142 	 * Copies target
143 	 * Since 2.22
144 	 * Returns: a copy of target
145 	 */
146 	public SrvTarget copy()
147 	{
148 		// GSrvTarget * g_srv_target_copy (GSrvTarget *target);
149 		auto p = g_srv_target_copy(gSrvTarget);
150 		
151 		if(p is null)
152 		{
153 			return null;
154 		}
155 		
156 		return ObjectG.getDObject!(SrvTarget)(cast(GSrvTarget*) p);
157 	}
158 	
159 	/**
160 	 * Frees target
161 	 * Since 2.22
162 	 */
163 	public void free()
164 	{
165 		// void g_srv_target_free (GSrvTarget *target);
166 		g_srv_target_free(gSrvTarget);
167 	}
168 	
169 	/**
170 	 * Gets target's hostname (in ASCII form; if you are going to present
171 	 * this to the user, you should use g_hostname_is_ascii_encoded() to
172 	 * check if it contains encoded Unicode segments, and use
173 	 * g_hostname_to_unicode() to convert it if it does.)
174 	 * Since 2.22
175 	 * Returns: target's hostname
176 	 */
177 	public string getHostname()
178 	{
179 		// const gchar * g_srv_target_get_hostname (GSrvTarget *target);
180 		return Str.toString(g_srv_target_get_hostname(gSrvTarget));
181 	}
182 	
183 	/**
184 	 * Gets target's port
185 	 * Since 2.22
186 	 * Returns: target's port
187 	 */
188 	public ushort getPort()
189 	{
190 		// guint16 g_srv_target_get_port (GSrvTarget *target);
191 		return g_srv_target_get_port(gSrvTarget);
192 	}
193 	
194 	/**
195 	 * Gets target's priority. You should not need to look at this;
196 	 * GResolver already sorts the targets according to the algorithm in
197 	 * RFC 2782.
198 	 * Since 2.22
199 	 * Returns: target's priority
200 	 */
201 	public ushort getPriority()
202 	{
203 		// guint16 g_srv_target_get_priority (GSrvTarget *target);
204 		return g_srv_target_get_priority(gSrvTarget);
205 	}
206 	
207 	/**
208 	 * Gets target's weight. You should not need to look at this;
209 	 * GResolver already sorts the targets according to the algorithm in
210 	 * RFC 2782.
211 	 * Since 2.22
212 	 * Returns: target's weight
213 	 */
214 	public ushort getWeight()
215 	{
216 		// guint16 g_srv_target_get_weight (GSrvTarget *target);
217 		return g_srv_target_get_weight(gSrvTarget);
218 	}
219 	
220 	/**
221 	 * Sorts targets in place according to the algorithm in RFC 2782.
222 	 * Since 2.22
223 	 * Params:
224 	 * targets = a GList of GSrvTarget
225 	 * Returns: the head of the sorted list. [transfer full]
226 	 */
227 	public static ListG listSort(ListG targets)
228 	{
229 		// GList * g_srv_target_list_sort (GList *targets);
230 		auto p = g_srv_target_list_sort((targets is null) ? null : targets.getListGStruct());
231 		
232 		if(p is null)
233 		{
234 			return null;
235 		}
236 		
237 		return ObjectG.getDObject!(ListG)(cast(GList*) p);
238 	}
239 }