From patchwork Sat Jun 20 17:16:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Levis X-Patchwork-Id: 20529 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id AD55C44A59F for ; Sat, 20 Jun 2020 20:17:04 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 83F9468B7A4; Sat, 20 Jun 2020 20:17:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DE53C68B507 for ; Sat, 20 Jun 2020 20:16:57 +0300 (EEST) Received: by mail-wm1-f48.google.com with SMTP id y20so11866258wmi.2 for ; Sat, 20 Jun 2020 10:16:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=s9osf8gazDYci1GvbVQo0V7M/J/QobVO1wV3Rg1bK/w=; b=dAul1nW7nLSqOkLOcykmQ6rfPInm88ItbrGVtQlu5sHd4edEut7Bn4wpV88KCX38WR 1/L0deQmOx65QGimofzHc9vEyKSkPe4o/rI0SikTjbiWh1ViGSoweCJZ8ZrDdhheoTg/ k7KjeaxFl2cfPvFEgSerBR5z6a2/87V9h+xO7jUKotoXXR3FeeWvV+Qp1I43m65xCskm f1GhKS99Zs2tsWudFxEmQhg0Q6CMr/Avcm2wFd17LK8GYzBKPikjycTrBa4Pq4XI+VY0 1T8NwllFoglWa6687//46nuHY+JQIGOD/97yXD2RqYRURHhBdo4xpopPZ08jTchqV2r+ l/dA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=s9osf8gazDYci1GvbVQo0V7M/J/QobVO1wV3Rg1bK/w=; b=jgyzcFtWfb6XI5yzVbh53ttqyikC29tjhyUKMzq47KPPEjduG3Hv9uhnqD09A2gJZ3 RR8n/VGzGB++2H6fU7Nl8HkxsCZ2QyDDeGRrnIhVqG9jp8k3wEGy/uloxSBUR34q4alD ei98FpOEd+ArJPXmGHxw+aNEapRYHZvjsNasppRkYgjRjB0KWGlzeIHy+5u4SE7RgmBS ghkrOnwiboX5SeW1TTI3SxjwUdJNRVasn/qeb0NQ/Gas8qAQHqsl/j2mKxALC6R2Rpct 1CVSOewFu8vv93zGmdRPNOltZ+KiN6B7GcHr6f3OQ38kfX+sUHgoMKm6mvGBzukSiIDT bRyg== X-Gm-Message-State: AOAM5304Ufy16AMuICcgt8KWdqtOvTqjCJeiU3PwUsAJaAxJOnBTfex8 rUcSq6rYqxeJQrgQ3Hrapt92vJoIjYo= X-Google-Smtp-Source: ABdhPJwdyc0mYt4QgQKlGBDvygzCS66VoB8X8K4t6oaHTygpbXbh+DSDGIEUMrxiqehFXLrpq4Ynzg== X-Received: by 2002:a1c:98cc:: with SMTP id a195mr9490885wme.89.1592673417079; Sat, 20 Jun 2020 10:16:57 -0700 (PDT) Received: from vogons.hubee.lan ([2a01:e0a:1b4:9a30:2916:6e7a:de7d:460c]) by smtp.gmail.com with ESMTPSA id 2sm2401995wmo.44.2020.06.20.10.16.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Jun 2020 10:16:56 -0700 (PDT) From: Levis Florian To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 Jun 2020 19:16:50 +0200 Message-Id: <20200620171650.105420-1-levis.florian@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200615091655.76925-1-levis.florian@gmail.com> References: <20200615091655.76925-1-levis.florian@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat: AMQP: add option delivery_mode X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Levis Florian Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Levis Florian --- doc/protocols.texi | 15 +++++++++++++++ libavformat/libamqp.c | 6 +++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/doc/protocols.texi b/doc/protocols.texi index 7aa758541c..2e15925eeb 100644 --- a/doc/protocols.texi +++ b/doc/protocols.texi @@ -109,6 +109,21 @@ the received message may be truncated causing decoding errors. The timeout in seconds during the initial connection to the broker. The default value is rw_timeout, or 5 seconds if rw_timeout is not set. +@item delivery_mode @var{mode} +Sets the delivery mode of each messages sent. + +The following values are recognized: +@table @samp +@item persistent +Delivery mode set to "persistent" (2). This is the default value. +Messages may be written to the broker's disk depending on its setup. + +@item non-persistent +Delivery mode set to "non-persistent" (1) +Messages may be stay in the broker's memory depending on its setup. + +@end table + @end table @section async diff --git a/libavformat/libamqp.c b/libavformat/libamqp.c index aaf0e51152..81df724a6d 100644 --- a/libavformat/libamqp.c +++ b/libavformat/libamqp.c @@ -39,6 +39,7 @@ typedef struct AMQPContext { int pkt_size; int64_t connection_timeout; int pkt_size_overflow; + int delivery_mode; } AMQPContext; #define STR_LEN 1024 @@ -52,6 +53,9 @@ static const AVOption options[] = { { "exchange", "Exchange to send/read packets", OFFSET(exchange), AV_OPT_TYPE_STRING, { .str = "amq.direct" }, 0, 0, .flags = D | E }, { "routing_key", "Key to filter streams", OFFSET(routing_key), AV_OPT_TYPE_STRING, { .str = "amqp" }, 0, 0, .flags = D | E }, { "connection_timeout", "Initial connection timeout", OFFSET(connection_timeout), AV_OPT_TYPE_DURATION, { .i64 = -1 }, -1, INT64_MAX, .flags = D | E}, + { "delivery_mode", "Delivery mode", OFFSET(delivery_mode), AV_OPT_TYPE_INT, { .i64 = AMQP_DELIVERY_PERSISTENT }, 1, 2, .flags = E, "delivery_mode"}, + { "persistent", "Persistent delivery mode", 0, AV_OPT_TYPE_CONST, { .i64 = AMQP_DELIVERY_PERSISTENT }, 0, 0, E, "delivery_mode" }, + { "non-persistent", "Non-persistent delivery mode", 0, AV_OPT_TYPE_CONST, { .i64 = AMQP_DELIVERY_NONPERSISTENT }, 0, 0, E, "delivery_mode" }, { NULL } }; @@ -222,7 +226,7 @@ static int amqp_proto_write(URLContext *h, const unsigned char *buf, int size) props._flags = AMQP_BASIC_CONTENT_TYPE_FLAG | AMQP_BASIC_DELIVERY_MODE_FLAG; props.content_type = amqp_cstring_bytes("octet/stream"); - props.delivery_mode = 2; /* persistent delivery mode */ + props.delivery_mode = s->delivery_mode; ret = amqp_basic_publish(s->conn, DEFAULT_CHANNEL, amqp_cstring_bytes(s->exchange), amqp_cstring_bytes(s->routing_key), 0, 0,