summaryrefslogtreecommitdiff
path: root/src/lib/ecore_con/efl_net_server_udp.eo
blob: afc5949c4ebfdca8abd089e19bfc6bfad6b3983a (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
class Efl.Net.Server_Udp (Efl.Net.Server_Ip) {
    [[A UDP server.

      @since 1.19
    ]]

    methods {
        @property dont_route {
            [[Avoids sent UDP packets being routed by a gateway, limiting them to the local network.

              This will use SO_DONTROUTE option to avoid gateways
              routing sent packets to outside the local network. It's
              useful for some protocols that only want the local area to
              be affected.
            ]]
            get { }
            set {
                return: bool (false); [[$true on success]]
            }
            values {
                dont_route: bool; [[If $true limit packets to the local network, $false otherwise]]
            }
        }

        multicast_join {
            [[Joins a multicast group.

              The multicast address should be in the format:

                 IP\@INTERFACE

              With '\@INTERFACE' being optional, such as:

                 224.0.0.1 - use any interface (ie: 0.0.0.0)
                 224.0.0.1@0.0.0.0
                 224.0.0.1@192.168.0.1 - use the interface assigned to 192.168.0.1
                 ff02::1@0 - use any interface
                 ff02::1@1 - use loopback interface (idx=1)
            ]]
            params {
                address: string @nonull; [[Multicast group address]]
            }
            return: Eina.Error; [[0 on success, error code otherwise]]
        }

        multicast_leave {
            [[Leaves a multicast group.

              This reverses the effect of @.multicast_join.
            ]]
            params {
                address: string @nonull; [[Multicast group address]]
            }
            return: Eina.Error; [[0 on success, error code otherwise]]
        }

        multicast_groups_get {
            [[Returns the multicast groups this server has joined.

              The iterator is only valid until a new group is joined
              or left using @.multicast_join or @.multicast_leave.
            ]]
            return: iterator<string> @owned; [[List of multicast groups]]
        }

        @property multicast_time_to_live {
            [[Controls time to live in number of hops.

              If 1 (default), packets are only delivered to the local network.
            ]]
            get { }
            set {
                return: Eina.Error; [[0 on success, error code otherwise]]
            }
            values {
                ttl: uint8; [[Time to live]]
            }
        }

        @property multicast_loopback {
            [[Controls whenever multicast will loopback packets locally.

              If $false, then packets won't be looped back locally,
              just delivered for remote peers.
            ]]
            get { }
            set {
                return: Eina.Error; [[0 on success, error code otherwise]]
            }
            values {
                loopback: bool; [[$true when multicast packets are looped back, $false otherwise]]
            }
        }
    }

    implements {
        Efl.Object.constructor;
        Efl.Object.destructor;
        Efl.Net.Server.serve;
        Efl.Net.Server_Fd.process_incoming_data;
        Efl.Net.Server_Fd.socket_activate;
    }
}