summaryrefslogtreecommitdiff
path: root/pages/develop/api/efl/net/socket/udp.txt
blob: 807761c68dbb72afff8460974d768abcb570301c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
~~Title: Efl.Net.Socket.Udp~~
====== Efl.Net.Socket.Udp (class) ======

===== Description =====

%%A base UDP socket.%%

%%This is the common class and takes an existing FD, usually created by an dialer.%%

%%Since for the server 'clients' there is no accepted connection it will reuse the same file decriptor. To avoid it being closed, another class Efl.Net.Server.Udp.Client is used instead.%%

//Since 1.19//

{{page>:develop:api-include:efl:net:socket:udp:description&nouser&nolink&nodate}}

===== Inheritance =====

 => [[:develop:api:efl:net:socket:fd|Efl.Net.Socket.Fd]] //(class)// => [[:develop:api:efl:loop:fd|Efl.Loop.Fd]] //(class)// => [[:develop:api:efl:loop:consumer|Efl.Loop.Consumer]] //(class)// => [[:develop:api:efl:object|Efl.Object]] //(class)//
++++ Full hierarchy |

  * [[:develop:api:efl:net:socket:fd|Efl.Net.Socket.Fd]] //(class)//
    * [[:develop:api:efl:loop:fd|Efl.Loop.Fd]] //(class)//
      * [[:develop:api:efl:loop:consumer|Efl.Loop.Consumer]] //(class)//
        * [[:develop:api:efl:object|Efl.Object]] //(class)//
    * [[:develop:api:efl:io:reader:fd|Efl.Io.Reader.Fd]] //(mixin)//
      * [[:develop:api:efl:io:reader|Efl.Io.Reader]] //(interface)//
    * [[:develop:api:efl:io:writer:fd|Efl.Io.Writer.Fd]] //(mixin)//
      * [[:develop:api:efl:io:writer|Efl.Io.Writer]] //(interface)//
    * [[:develop:api:efl:io:closer:fd|Efl.Io.Closer.Fd]] //(mixin)//
      * [[:develop:api:efl:io:closer|Efl.Io.Closer]] //(mixin)//
      * [[:develop:api:efl:object|Efl.Object]] //(class)//
    * [[:develop:api:efl:net:socket|Efl.Net.Socket]] //(interface)//
      * [[:develop:api:efl:io:reader|Efl.Io.Reader]] //(interface)//
      * [[:develop:api:efl:io:writer|Efl.Io.Writer]] //(interface)//
      * [[:develop:api:efl:io:closer|Efl.Io.Closer]] //(mixin)//


++++
===== Members =====

**[[:develop:api:efl:net:socket:udp:property:bind|bind]]** //**(get, set)**//\\
> %%Forces binding to a specific address.%%
<code c>
const char *efl_net_socket_udp_bind_get(const Eo *obj);
Eina_Error efl_net_socket_udp_bind_set(Eo *obj, const char *address);
</code>
\\
**[[:develop:api:efl:net:socket:udp:method:constructor|constructor]]**// [Overridden from [[:develop:api:efl:object|Efl.Object]]]//\\
> %%Call the object's constructor.%%
<code c>
Efl_Object *efl_constructor(Eo *obj);
</code>
\\
**[[:develop:api:efl:net:socket:udp:property:cork|cork]]** //**(get, set)**//\\
> %%Controls UDP's cork using UDP_CORK%%
<code c>
Eina_Bool efl_net_socket_udp_cork_get(const Eo *obj);
Eina_Bool efl_net_socket_udp_cork_set(Eo *obj, Eina_Bool cork);
</code>
\\
**[[:develop:api:efl:net:socket:udp:method:destructor|destructor]]**// [Overridden from [[:develop:api:efl:object|Efl.Object]]]//\\
> %%Call the object's destructor.%%
<code c>
void efl_destructor(Eo *obj);
</code>
\\
**[[:develop:api:efl:net:socket:udp:property:dont_route|dont_route]]** //**(get, set)**//\\
> %%Avoids sent UDP packets being routed by a gateway, limiting them to the local network.%%
<code c>
Eina_Bool efl_net_socket_udp_dont_route_get(const Eo *obj);
Eina_Bool efl_net_socket_udp_dont_route_set(Eo *obj, Eina_Bool dont_route);
</code>
\\
**[[:develop:api:efl:net:socket:udp:property:fd|fd]]** //**(get, set)**//// [Overridden from [[:develop:api:efl:loop:fd|Efl.Loop.Fd]]]//\\
> %%Defines which file descriptor to watch. If it is a file, use file_fd variant.%%
<code c>
int efl_loop_fd_get(const Eo *obj);
void efl_loop_fd_set(Eo *obj, int fd);
</code>
\\
**[[:develop:api:efl:net:socket:udp:method:multicast_groups_get|multicast_groups_get]]**\\
> %%Returns the multicast groups this server has joined.%%
<code c>
Eina_Iterator *efl_net_socket_udp_multicast_groups_get(Eo *obj);
</code>
\\
**[[:develop:api:efl:net:socket:udp:method:multicast_join|multicast_join]]**\\
> %%Joins a multicast group.%%
<code c>
Eina_Error efl_net_socket_udp_multicast_join(Eo *obj, const char *address);
</code>
\\
**[[:develop:api:efl:net:socket:udp:method:multicast_leave|multicast_leave]]**\\
> %%Leaves a multicast group.%%
<code c>
Eina_Error efl_net_socket_udp_multicast_leave(Eo *obj, const char *address);
</code>
\\
**[[:develop:api:efl:net:socket:udp:property:multicast_loopback|multicast_loopback]]** //**(get, set)**//\\
> %%Controls whenever multicast will loopback packets locally.%%
<code c>
Eina_Bool efl_net_socket_udp_multicast_loopback_get(const Eo *obj);
Eina_Error efl_net_socket_udp_multicast_loopback_set(Eo *obj, Eina_Bool loopback);
</code>
\\
**[[:develop:api:efl:net:socket:udp:property:multicast_time_to_live|multicast_time_to_live]]** //**(get, set)**//\\
> %%Controls time to live in number of hops.%%
<code c>
uint8_t efl_net_socket_udp_multicast_time_to_live_get(const Eo *obj);
Eina_Error efl_net_socket_udp_multicast_time_to_live_set(Eo *obj, uint8_t ttl);
</code>
\\
**[[:develop:api:efl:net:socket:udp:method:next_datagram_size_query|next_datagram_size_query]]**\\
> %%Queries the next datagram size.%%
<code c>
size_t efl_net_socket_udp_next_datagram_size_query(Eo *obj);
</code>
\\
**[[:develop:api:efl:net:socket:udp:method:read|read]]**// [Overridden from [[:develop:api:efl:io:reader|Efl.Io.Reader]]]//\\
> %%Reads data into a pre-allocated buffer.%%
<code c>
Eina_Error efl_io_reader_read(Eo *obj, Eina_Rw_Slice rw_slice);
</code>
\\
**[[:develop:api:efl:net:socket:udp:property:reuse_address|reuse_address]]** //**(get, set)**//\\
> %%Controls address reuse() using SO_REUSEADDR%%
<code c>
Eina_Bool efl_net_socket_udp_reuse_address_get(const Eo *obj);
Eina_Bool efl_net_socket_udp_reuse_address_set(Eo *obj, Eina_Bool reuse_address);
</code>
\\
**[[:develop:api:efl:net:socket:udp:property:reuse_port|reuse_port]]** //**(get, set)**//\\
> %%Controls port reuse() using SO_REUSEPORT (since Linux 3.9)%%
<code c>
Eina_Bool efl_net_socket_udp_reuse_port_get(const Eo *obj);
Eina_Bool efl_net_socket_udp_reuse_port_set(Eo *obj, Eina_Bool reuse_port);
</code>
\\
**[[:develop:api:efl:net:socket:udp:method:write|write]]**// [Overridden from [[:develop:api:efl:io:writer|Efl.Io.Writer]]]//\\
> %%Writes data from a pre-populated buffer.%%
<code c>
Eina_Error efl_io_writer_write(Eo *obj, Eina_Slice slice, Eina_Slice *remaining);
</code>
\\
**[[:develop:api:efl:net:socket:udp:method:init|init]]** ''protected''\\
> %%Initializes the socket to communicate with a given IP address%%
<code c>
void efl_net_socket_udp_init(Eo *obj, Efl_Net_Ip_Address *remote_address);
</code>
\\

==== Inherited ====

^ [[:develop:api:efl:io:closer:fd|Efl.Io.Closer.Fd]] ^^^
|  | **[[:develop:api:efl:io:closer:fd:property:close_on_destructor|close_on_destructor]]** //**(get, set)**// | %%If true will automatically close() on object destructor.%% |
|  | **[[:develop:api:efl:io:closer:fd:property:close_on_exec|close_on_exec]]** //**(get, set)**// | %%If true will automatically close resources on exec() calls.%% |
|  ''protected set'' | **[[:develop:api:efl:io:closer:fd:property:closer_fd|closer_fd]]** //**(get, set)**// | %%Closer file descriptor%% |
^ [[:develop:api:efl:io:reader:fd|Efl.Io.Reader.Fd]] ^^^
|  ''protected set'' | **[[:develop:api:efl:io:reader:fd:property:reader_fd|reader_fd]]** //**(get, set)**// | %%Reader file descriptor%% |
^ [[:develop:api:efl:io:writer:fd|Efl.Io.Writer.Fd]] ^^^
|  ''protected set'' | **[[:develop:api:efl:io:writer:fd:property:writer_fd|writer_fd]]** //**(get, set)**// | %%Writer file descriptor%% |
^ [[:develop:api:efl:loop:consumer|Efl.Loop.Consumer]] ^^^
|  | **[[:develop:api:efl:loop:consumer:property:loop|loop]]** //**(get)**// | %%The loop to which this object belongs to.%% |
^ [[:develop:api:efl:loop:fd|Efl.Loop.Fd]] ^^^
|  | **[[:develop:api:efl:loop:fd:property:fd_file|fd_file]]** //**(get, set)**// | %%Defines which file descriptor to watch when watching a file.%% |
|  | **[[:develop:api:efl:loop:fd:property:parent|parent]]** //**(get, set)**// | %%The parent of an object.%% |
^ [[:develop:api:efl:net:socket:fd|Efl.Net.Socket.Fd]] ^^^
|  ''protected set'' | **[[:develop:api:efl:net:socket:fd:property:address_local|address_local]]** //**(get, set)**// | %%The local address, similar to getsockname().%% |
|  ''protected set'' | **[[:develop:api:efl:net:socket:fd:property:address_remote|address_remote]]** //**(get, set)**// | %%The remote address, similar to getpeername().%% |
|  ''protected set'' | **[[:develop:api:efl:net:socket:fd:property:can_read|can_read]]** //**(get, set)**// | %%If %%''true''%% will notify %%[[:develop:api:efl:io:reader:method:read|Efl.Io.Reader.read]]%% can be called without blocking or failing.%% |
|  ''protected set'' | **[[:develop:api:efl:net:socket:fd:property:can_write|can_write]]** //**(get, set)**// | %%If %%''true''%% will notify %%[[:develop:api:efl:io:writer:method:write|Efl.Io.Writer.write]]%% can be called without blocking or failing.%% |
|  | **[[:develop:api:efl:net:socket:fd:method:close|close]]** | %%Closes the Input/Output object.%% |
|  | **[[:develop:api:efl:net:socket:fd:property:closed|closed]]** //**(get, set)**// | %%If true will notify object was closed.%% |
|  ''protected set'' | **[[:develop:api:efl:net:socket:fd:property:eos|eos]]** //**(get, set)**// | %%If %%''true''%% will notify end of stream.%% |
|  ''protected set'' | **[[:develop:api:efl:net:socket:fd:property:family|family]]** //**(get, set)**// | %%The address family (AF_*) family of this socket.%% |
|  | **[[:develop:api:efl:net:socket:fd:method:finalize|finalize]]** | %%Called at the end of efl_add. Should not be called, just overridden.%% |
^ [[:develop:api:efl:object|Efl.Object]] ^^^
|  | **[[:develop:api:efl:object:property:allow_parent_unref|allow_parent_unref]]** //**(get, set)**// | %%Allow an object to be deleted by unref even if it has a parent.%% |
|  | **[[:develop:api:efl:object:method:children_iterator_new|children_iterator_new]]** | %%Get an iterator on all childrens%% |
|  | **[[:develop:api:efl:object:property:comment|comment]]** //**(get, set)**// | %%A human readable comment for the object%% |
|  | **[[:develop:api:efl:object:method:composite_attach|composite_attach]]** | %%Make an object a composite object of another.%% |
|  | **[[:develop:api:efl:object:method:composite_detach|composite_detach]]** | %%Detach a composite object from another object.%% |
|  | **[[:develop:api:efl:object:method:composite_part_is|composite_part_is]]** | %%Check if an object is part of a composite object.%% |
|  | **[[:develop:api:efl:object:method:debug_name_override|debug_name_override]]** | %%Build a read-only name for this object used for debugging.%% |
|  | **[[:develop:api:efl:object:method:del|del]]** | %%Unrefs the object and reparents it to NULL.%% |
|  | **[[:develop:api:efl:object:method:event_callback_forwarder_add|event_callback_forwarder_add]]** | %%Add an event callback forwarder for an event and an object.%% |
|  | **[[:develop:api:efl:object:method:event_callback_forwarder_del|event_callback_forwarder_del]]** | %%Remove an event callback forwarder for an event and an object.%% |
|  | **[[:develop:api:efl:object:method:event_callback_stop|event_callback_stop]]** | %%Stop the current callback call.%% |
|  | **[[:develop:api:efl:object:method:event_freeze|event_freeze]]** | %%Freeze events of object.%% |
|  | **[[:develop:api:efl:object:property:event_freeze_count|event_freeze_count]]** //**(get)**// | %%Return freeze events of object.%% |
|  ''class'' | **[[:develop:api:efl:object:method:event_global_freeze|event_global_freeze]]** | %%Freeze events of object.%% |
|  ''class'' | **[[:develop:api:efl:object:property:event_global_freeze_count|event_global_freeze_count]]** //**(get)**// | %%Return freeze events of object.%% |
|  ''class'' | **[[:develop:api:efl:object:method:event_global_thaw|event_global_thaw]]** | %%Thaw events of object.%% |
|  | **[[:develop:api:efl:object:method:event_thaw|event_thaw]]** | %%Thaw events of object.%% |
|  | **[[:develop:api:efl:object:property:finalized|finalized]]** //**(get)**// | %%True if the object is already finalized, otherwise false.%% |
|  | **[[:develop:api:efl:object:property:name|name]]** //**(get, set)**// | %%The name of the object.%% |
|  | **[[:develop:api:efl:object:method:name_find|name_find]]** | %%Find a child object with the given name and return it.%% |
|  | **[[:develop:api:efl:object:method:provider_find|provider_find]]** | %%Searches upwards in the object tree for a provider which knows the given class/interface.%% |

===== Events =====

==== Inherited ====

^ [[:develop:api:efl:io:closer|Efl.Io.Closer]] ^^^
|  | **[[:develop:api:efl:io:closer:event:closed|closed]]** | %%Notifies closed, when property is marked as true%% |
^ [[:develop:api:efl:io:reader|Efl.Io.Reader]] ^^^
|  | **[[:develop:api:efl:io:reader:event:can_read_changed|can_read,changed]]** | %%Notifies can_read property changed.%% |
|  | **[[:develop:api:efl:io:reader:event:eos|eos]]** | %%Notifies end of stream, when property is marked as true.%% |
^ [[:develop:api:efl:io:writer|Efl.Io.Writer]] ^^^
|  | **[[:develop:api:efl:io:writer:event:can_write_changed|can_write,changed]]** | %%Notifies can_write property changed.%% |
^ [[:develop:api:efl:loop:fd|Efl.Loop.Fd]] ^^^
|  | **[[:develop:api:efl:loop:fd:event:error|error]]** | %%Called when a error occurred on the file descriptor%% |
|  | **[[:develop:api:efl:loop:fd:event:read|read]]** | %%Called when a read happened on the file descriptor%% |
|  | **[[:develop:api:efl:loop:fd:event:write|write]]** | %%Called when a write happened on the file descriptor%% |
^ [[:develop:api:efl:object|Efl.Object]] ^^^
|  | **[[:develop:api:efl:object:event:callback_add|callback,add]]** | %%A callback was added.%% |
|  | **[[:develop:api:efl:object:event:callback_del|callback,del]]** | %%A callback was deleted.%% |
|  | **[[:develop:api:efl:object:event:del|del]]** | %%Object is being deleted.%% |
|  | **[[:develop:api:efl:object:event:destruct|destruct]]** | %%Object has been fully destroyed. It can not be used beyond this point. This event should only serve to clean up any dangling pointer.%% |