summaryrefslogtreecommitdiff
path: root/qpid/dotnet/Qpid.Messaging/IChannel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/dotnet/Qpid.Messaging/IChannel.cs')
-rw-r--r--qpid/dotnet/Qpid.Messaging/IChannel.cs150
1 files changed, 136 insertions, 14 deletions
diff --git a/qpid/dotnet/Qpid.Messaging/IChannel.cs b/qpid/dotnet/Qpid.Messaging/IChannel.cs
index 7fceb1a532..7ff1e4b82d 100644
--- a/qpid/dotnet/Qpid.Messaging/IChannel.cs
+++ b/qpid/dotnet/Qpid.Messaging/IChannel.cs
@@ -23,42 +23,135 @@ using System;
namespace Qpid.Messaging
{
public delegate void MessageReceivedDelegate(IMessage msg);
-
+
+ /// <summary>
+ /// Interface used to manipulate an AMQP channel.
+ /// </summary>
+ /// <remarks>
+ /// You can create a channel by using the CreateChannel() method
+ /// of the connection object.
+ /// </remarks>
public interface IChannel : IDisposable
{
+ /// <summary>
+ /// Acknowledge mode for messages received
+ /// </summary>
AcknowledgeMode AcknowledgeMode { get; }
+ /// <summary>
+ /// True if the channel should use transactions
+ /// </summary>
bool Transacted { get; }
/// <summary>
/// Prefetch value to be used as the default for consumers created on this channel.
/// </summary>
- int DefaultPrefetch
- {
- get;
- set;
- }
-
+ int DefaultPrefetch { get; set; }
+
+ /// <summary>
+ /// Declare a new exchange
+ /// </summary>
+ /// <param name="exchangeName">Name of the exchange</param>
+ /// <param name="exchangeClass">Class of the exchange, from <see cref="ExchangeClassConstants"/></param>
void DeclareExchange(string exchangeName, string exchangeClass);
+ /// <summary>
+ /// Declare a new exchange using the default exchange class
+ /// </summary>
+ /// <param name="exchangeName">Name of the exchange</param>
void DeleteExchange(string exchangeName);
+ /// <summary>
+ /// Declare a new queue with the specified set of arguments
+ /// </summary>
+ /// <param name="queueName">Name of the queue</param>
+ /// <param name="isDurable">True if the queue should be durable</param>
+ /// <param name="isExclusive">True if the queue should be exclusive to this channel</param>
+ /// <param name="isAutoDelete">True if the queue should be deleted when the channel closes</param>
void DeclareQueue(string queueName, bool isDurable, bool isExclusive, bool isAutoDelete);
- void DeleteQueue();
-
+ /// <summary>
+ /// Delete a queue with the specifies arguments
+ /// </summary>
+ /// <param name="queueName">Name of the queue to delete</param>
+ /// <param name="ifUnused">If true, the queue will not deleted if it has no consumers</param>
+ /// <param name="ifEmpty">If true, the queue will not deleted if it has no messages</param>
+ /// <param name="noWait">If true, the server will not respond to the method</param>
+ void DeleteQueue(string queueName, bool ifUnused, bool ifEmpty, bool noWait);
+ /// <summary>
+ /// Generate a new Unique name to use for a queue
+ /// </summary>
+ /// <returns>A unique name to this channel</returns>
string GenerateUniqueName();
- IFieldTable CreateFieldTable();
+ /// <summary>
+ /// Removes all messages from a queue
+ /// </summary>
+ /// <param name="queueName">Name of the queue to delete</param>
+ /// <param name="noWait">If true, the server will not respond to the method</param>
+ void PurgeQueue(string queueName, bool noWait);
+
+ /// <summary>
+ /// Bind a queue to the specified exchange
+ /// </summary>
+ /// <param name="queueName">Name of queue to bind</param>
+ /// <param name="exchangeName">Name of exchange to bind to</param>
+ /// <param name="routingKey">Routing key</param>
void Bind(string queueName, string exchangeName, string routingKey);
+ /// <summary>
+ /// Bind a queue to the specified exchange
+ /// </summary>
+ /// <param name="queueName">Name of queue to bind</param>
+ /// <param name="exchangeName">Name of exchange to bind to</param>
+ /// <param name="routingKey">Routing key</param>
+ /// <param name="args">Table of arguments for the binding. Used to bind with a Headers Exchange</param>
void Bind(string queueName, string exchangeName, string routingKey, IFieldTable args);
+ /// <summary>
+ /// Create a new empty message with no body
+ /// </summary>
+ /// <returns>The new message</returns>
IMessage CreateMessage();
+ /// <summary>
+ /// Create a new message of the specified MIME type
+ /// </summary>
+ /// <param name="mimeType">The mime type to create</param>
+ /// <returns>The new message</returns>
+ IMessage CreateMessage(string mimeType);
+ /// <summary>
+ /// Creates a new message for bytes (application/octet-stream)
+ /// </summary>
+ /// <returns>The new message</returns>
IBytesMessage CreateBytesMessage();
+ /// <summary>
+ /// Creates a new text message (text/plain) with empty content
+ /// </summary>
+ /// <returns>The new message</returns>
ITextMessage CreateTextMessage();
+ /// <summary>
+ /// Creates a new text message (text/plain) with a body
+ /// </summary>
+ /// <param name="initialValue">Initial body of the message</param>
+ /// <returns>The new message</returns>
ITextMessage CreateTextMessage(string initialValue);
#region Consuming
-
+
+ /// <summary>
+ /// Creates a new Consumer using the builder pattern
+ /// </summary>
+ /// <param name="queueName">Name of queue to receive messages from</param>
+ /// <returns>The builder object</returns>
MessageConsumerBuilder CreateConsumerBuilder(string queueName);
+ /// <summary>
+ /// Creates a new consumer
+ /// </summary>
+ /// <param name="queueName">Name of queue to receive messages from</param>
+ /// <param name="prefetchLow">Low prefetch value</param>
+ /// <param name="prefetchHigh">High prefetch value</param>
+ /// <param name="noLocal">If true, messages sent on this channel will not be received by this consumer</param>
+ /// <param name="exclusive">If true, the consumer opens the queue in exclusive mode</param>
+ /// <param name="durable">If true, create a durable subscription</param>
+ /// <param name="subscriptionName">Subscription name</param>
+ /// <returns>The new consumer</returns>
IMessageConsumer CreateConsumer(string queueName,
int prefetchLow,
int prefetchHigh,
@@ -66,15 +159,35 @@ namespace Qpid.Messaging
bool exclusive,
bool durable,
string subscriptionName);
-
+
+ /// <summary>
+ /// Unsubscribe from a queue
+ /// </summary>
+ /// <param name="subscriptionName">Subscription name</param>
void Unsubscribe(string subscriptionName);
#endregion
#region Publishing
+ /// <summary>
+ /// Create a new message publisher using the builder pattern
+ /// </summary>
+ /// <returns>The builder object</returns>
MessagePublisherBuilder CreatePublisherBuilder();
-
+
+ /// <summary>
+ /// Create a new message publisher
+ /// </summary>
+ /// <param name="exchangeName">Name of exchange to publish to</param>
+ /// <param name="routingKey">Routing key</param>
+ /// <param name="deliveryMode">Default delivery mode</param>
+ /// <param name="timeToLive">Default TTL time of messages</param>
+ /// <param name="immediate">If true, sent immediately</param>
+ /// <param name="mandatory">If true, the broker will return an error
+ /// (as a connection exception) if the message cannot be delivered</param>
+ /// <param name="priority">Default message priority</param>
+ /// <returns>The new message publisher</returns>
IMessagePublisher CreatePublisher(string exchangeName,
string routingKey,
DeliveryMode deliveryMode,
@@ -86,9 +199,18 @@ namespace Qpid.Messaging
#endregion
#region Transactions
-
+
+ /// <summary>
+ /// Recover after transaction failure
+ /// </summary>
void Recover();
+ /// <summary>
+ /// Commit the transaction
+ /// </summary>
void Commit();
+ /// <summary>
+ /// Rollback the transaction
+ /// </summary>
void Rollback();
#endregion