]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/blobdiff - libavformat/udp.c
Added meaningful labels to FWP contracts
[frescor/ffmpeg.git] / libavformat / udp.c
index c0358678f85fafe219501739a278db0ba25343fb..d45288e5e27b79588924428cb21db29590bc9d22 100644 (file)
@@ -35,6 +35,8 @@
 #include <sys/time.h>
 
 #include <frsh.h>
+#include <frsh_core_types.h>
+
 long int udp_budget, udp_period;
 
 typedef struct {
@@ -52,6 +54,7 @@ typedef struct {
        frsh_vres_id_t vres;
        frsh_send_endpoint_protocol_info_t send_pinfo;
        frsh_contract_t contract;
+       frsh_contract_label_t label;
        frsh_rel_time_t budget, period;
 } UDPContext;
 
@@ -127,9 +130,10 @@ 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;
-       snprintf(netcont_name, sizeof(netcont_name), "net_cont%d", ++netcont_num);
+       snprintf(netcont_name, sizeof(netcont_name), "ffmpeg%02d", ++netcont_num);
        ret = frsh_contract_set_resource_and_label(&s->contract,FRSH_RT_NETWORK,
-                                               FRSH_NETPF_FWP, netcont_name);
+                                                  FRSH_NETPF_FWP,
+                                                  s->label[0] ? s->label : netcont_name);
        //if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_resource_and_label");
        if (ret) return -1;
 
@@ -254,6 +258,10 @@ static int udp_open(URLContext *h, const char *uri, int flags)
         if (find_info_tag(buf, sizeof(buf), "buffer_size", p)) {
             s->buffer_size = strtol(buf, NULL, 10);
         }
+        if (!find_info_tag(s->label, sizeof(s->label),
+                         "contract_label", p)) {
+               s->label[0]=0;
+        }
     }
 
     /* fill the dest addr */
@@ -334,11 +342,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 = {