Skip to content

Commit

Permalink
Merge pull request #892 from rabbitmq/backport-pr-865
Browse files Browse the repository at this point in the history
Backport #865 to 6.x
  • Loading branch information
lukebakken authored Jul 6, 2020
2 parents 267fcd2 + af59ca9 commit 1e45950
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 3 deletions.
2 changes: 2 additions & 0 deletions projects/RabbitMQ.Client/client/api/IBasicPublishBatch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,14 @@
// The Initial Developer of the Original Code is Pivotal Software, Inc.
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
//---------------------------------------------------------------------------

using System;

namespace RabbitMQ.Client
{
public interface IBasicPublishBatch
{
[Obsolete("Use Add(string exchange, string routingKey, bool mandatory, IBasicProperties properties, ReadOnlyMemory<byte> body) instead. Will be replaced in version 7.0", false)]
void Add(string exchange, string routingKey, bool mandatory, IBasicProperties properties, byte[] body);
void Publish();
}
Expand Down
7 changes: 6 additions & 1 deletion projects/RabbitMQ.Client/client/impl/BasicPublishBatch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
//---------------------------------------------------------------------------

using System;
using System.Buffers;
using System.Collections.Generic;

using RabbitMQ.Client.Framing.Impl;
Expand All @@ -56,6 +55,12 @@ internal BasicPublishBatch (ModelBase model)
}

public void Add(string exchange, string routingKey, bool mandatory, IBasicProperties basicProperties, byte[] body)
{
ReadOnlyMemory<byte> bodyAsMemory = body;
Add(exchange, routingKey, mandatory, basicProperties, bodyAsMemory);
}

public void Add(string exchange, string routingKey, bool mandatory, IBasicProperties basicProperties, ReadOnlyMemory<byte> body)
{
var method = new BasicPublish
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// This source code is dual-licensed under the Apache License, version
// 2.0, and the Mozilla Public License, version 1.1.
//
// The APL v2.0:
//
//---------------------------------------------------------------------------
// Copyright (c) 2007-2020 VMware, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//---------------------------------------------------------------------------
//
// The MPL v1.1:
//
//---------------------------------------------------------------------------
// The contents of this file are subject to the Mozilla Public License
// Version 1.1 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License
// at https://www.mozilla.org/MPL/
//
// Software distributed under the License is distributed on an "AS IS"
// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
// the License for the specific language governing rights and
// limitations under the License.
//
// The Original Code is RabbitMQ.
//
// The Initial Developer of the Original Code is Pivotal Software, Inc.
// Copyright (c) 2007-2020 VMware, Inc. All rights reserved.
//---------------------------------------------------------------------------

using System;
using RabbitMQ.Client.Impl;

namespace RabbitMQ.Client
{
public static class BasicPublishBatchExtensions
{
public static void Add(this IBasicPublishBatch batch, string exchange, string routingKey, bool mandatory, IBasicProperties properties, ReadOnlyMemory<byte> body)
{
if (batch is BasicPublishBatch batchInternal)
{
batchInternal.Add(exchange, routingKey, mandatory, properties, body);
return;
}

#pragma warning disable 618
batch.Add(exchange, routingKey, mandatory, properties, body.ToArray());
#pragma warning restore 618
}
}
}
6 changes: 6 additions & 0 deletions projects/Unit/APIApproval.Approve.verified.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ namespace RabbitMQ.Client
public bool Redelivered { get; }
public string RoutingKey { get; }
}
public static class BasicPublishBatchExtensions
{
public static void Add(this RabbitMQ.Client.IBasicPublishBatch batch, string exchange, string routingKey, bool mandatory, RabbitMQ.Client.IBasicProperties properties, System.ReadOnlyMemory<byte> body) { }
}
public class BinaryTableValue
{
public BinaryTableValue() { }
Expand Down Expand Up @@ -292,6 +296,8 @@ namespace RabbitMQ.Client
}
public interface IBasicPublishBatch
{
[System.Obsolete("Use Add(string exchange, string routingKey, bool mandatory, IBasicProperties prop" +
"erties, ReadOnlyMemory<byte> body) instead. Will be replaced in version 7.0", false)]
void Add(string exchange, string routingKey, bool mandatory, RabbitMQ.Client.IBasicProperties properties, byte[] body);
void Publish();
}
Expand Down
4 changes: 2 additions & 2 deletions projects/Unit/TestBasicPublishBatch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ public void TestBasicPublishBatchSend()
Model.QueueDeclare(queue: "test-message-batch-a", durable: false);
Model.QueueDeclare(queue: "test-message-batch-b", durable: false);
IBasicPublishBatch batch = Model.CreateBasicPublishBatch();
batch.Add("", "test-message-batch-a", false, null, new byte [] {});
batch.Add("", "test-message-batch-b", false, null, new byte [] {});
batch.Add("", "test-message-batch-a", false, null, new ReadOnlyMemory<byte>());
batch.Add("", "test-message-batch-b", false, null, new ReadOnlyMemory<byte>());
batch.Publish();
Model.WaitForConfirmsOrDie(TimeSpan.FromSeconds(15));
BasicGetResult resultA = Model.BasicGet("test-message-batch-a", true);
Expand Down

0 comments on commit 1e45950

Please sign in to comment.