]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/blobdiff - libavformat/udp.c
Added cancelation of contracts
[frescor/ffmpeg.git] / libavformat / udp.c
index 8dd961e56ef764f349e0f70cb236c36564feb6e3..f05d332b52c0aea7288f04c0a26f2f01967b1078 100644 (file)
@@ -35,6 +35,7 @@
 #include <sys/time.h>
 
 #include <frsh.h>
+long int udp_budget, udp_period;
 
 typedef struct {
     int udp_fd;
@@ -91,7 +92,9 @@ static int is_multicast_address(struct sockaddr_in *addr)
 static int 
 udp_socket_create(UDPContext *s, struct sockaddr_in *addr, int *addr_len)
 {
+       static long int netcont_num = 0;
        int ret,udp_fd;
+       char netcont_name[20];
 
     addr->sin_family = AF_INET;
     addr->sin_addr.s_addr = htonl (INADDR_ANY);
@@ -99,8 +102,8 @@ udp_socket_create(UDPContext *s, struct sockaddr_in *addr, int *addr_len)
     *addr_len = sizeof(struct sockaddr_in);
 
        /* set params for contract */
-       frsh_network_bytes_to_budget(FRSH_NETPF_FWP, 8600000, &s->budget);
-       s->period = fosa_msec_to_rel_time(100);
+       frsh_network_bytes_to_budget(FRSH_NETPF_FWP, udp_budget, &s->budget);
+       s->period = fosa_msec_to_rel_time(udp_period);
        s->send_pinfo.body = NULL;              
        
        udp_fd = frsh_send_endpoint_create(FRSH_NETPF_FWP, 
@@ -124,8 +127,9 @@ udp_socket_create(UDPContext *s, struct sockaddr_in *addr, int *addr_len)
                                             FRSH_CT_REGULAR);
        //if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
        if (ret) return -1;
-       ret = frsh_contract_set_resource_and_label(&s->contract,FRSH_RT_NETWORK,
-                                               FRSH_NETPF_FWP, "net_cont1");
+       snprintf(netcont_name, sizeof(netcont_name), "net_cont%d", ++netcont_num);
+       ret = frsh_contract_set_resource_and_label(&s->contract,FRSH_RT_NETWORK,
+                                               FRSH_NETPF_FWP, netcont_name);
        //if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_resource_and_label");
        if (ret) return -1;
 
@@ -330,11 +334,11 @@ static int udp_write(URLContext *h, uint8_t *buf, int size)
 static int udp_close(URLContext *h)
 {
     UDPContext *s = h->priv_data;
-    int ret1, ret2;
+    int ret;
        
-       ret1 = frsh_send_endpoint_destroy(s->sepoint);
-       ret2 = frsh_receive_endpoint_destroy(s->repoint);
-       return (ret1 || ret2);
+       frsh_send_endpoint_unbind(s->sepoint);
+       ret = frsh_contract_cancel(s->vres);
+       return ret;
 }
 
 URLProtocol udp_protocol = {