Exemple #1
0
        public void DeleteQueues(Property[] inputs, RequiredProperties required, Property[] returns, MethodType methodType, ServiceObject serviceObject)
        {
            Utilities.ServiceUtilities serviceUtilities = new Utilities.ServiceUtilities(serviceBroker);
            serviceObject.Properties.InitResultTable();
            NamespaceManager namespaceManager = null;

            try
            {
                string queuepath = string.Empty;
                if (inputs.Length == 0)
                {
                    queuepath = serviceObject.MetaData.DisplayName;
                }
                else
                {
                    queuepath = inputs.Where(p => p.Name.Equals("queue")).First().Value.ToString();
                }

                namespaceManager = serviceUtilities.GetNamespaceManager(inputs.Where(p => p.Name.Equals("requesttimeout")).FirstOrDefault());
                namespaceManager.DeleteQueue(queuepath);
                returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Success;
                returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = "Queue deleted";
            }
            catch (Exception ex)
            {
                returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Error;
                returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = ex.Message;
            }
            finally
            {
                namespaceManager = null;
            }

            serviceObject.Properties.BindPropertiesToResultTable();
        }
Exemple #2
0
        public void ListQueues(Property[] inputs, RequiredProperties required, Property[] returns, MethodType methodType, ServiceObject serviceObject)
        {
            Utilities.ServiceUtilities serviceUtilities = new Utilities.ServiceUtilities(serviceBroker);
            serviceObject.Properties.InitResultTable();
            NamespaceManager namespaceManager = null;

            System.Data.DataRow dr;
            try
            {
                namespaceManager = serviceUtilities.GetNamespaceManager(inputs.Where(p => p.Name.Equals("requesttimeout")).FirstOrDefault());
                IEnumerable <QueueDescription> Qs = namespaceManager.GetQueues();

                foreach (QueueDescription Queue in Qs)
                {
                    dr = serviceBroker.ServicePackage.ResultTable.NewRow();
                    foreach (Property prop in returns)
                    {
                        switch (prop.Name)
                        {
                        case "defaultmessagetimetolive":
                            dr[prop.Name] = Queue.DefaultMessageTimeToLive.TotalSeconds;
                            break;

                        case "duplicatedetectionhistorytimewindow":
                            dr[prop.Name] = Queue.DuplicateDetectionHistoryTimeWindow.TotalSeconds;
                            break;

                        case "enablebatchedoperations":
                            prop.Value = Queue.EnableBatchedOperations;
                            break;

                        case "enabledeadletteringonmessageexpiration":
                            dr[prop.Name] = Queue.EnableDeadLetteringOnMessageExpiration;
                            break;

                        case "isreadonly":
                            dr[prop.Name] = Queue.IsReadOnly;
                            break;

                        case "lockduration":
                            dr[prop.Name] = Queue.LockDuration.TotalSeconds;
                            break;

                        case "maxdeliverycount":
                            dr[prop.Name] = Queue.MaxDeliveryCount;
                            break;

                        case "maxsizeinmegabytes":
                            dr[prop.Name] = Queue.MaxSizeInMegabytes;
                            break;

                        case "messagecount":
                            dr[prop.Name] = Queue.MessageCount;
                            break;

                        case "queue":
                            dr[prop.Name] = Queue.Path;
                            break;

                        case "requiresduplicatedetection":
                            dr[prop.Name] = Queue.RequiresDuplicateDetection;
                            break;

                        case "requiressession":
                            dr[prop.Name] = Queue.RequiresSession;
                            break;

                        case "sizeinbytes":
                            dr[prop.Name] = Queue.SizeInBytes;
                            break;
                        }
                    }
                    dr["responsestatus"]            = ResponseStatus.Success;
                    dr["responsestatusdescription"] = "Queues listed";
                    serviceBroker.ServicePackage.ResultTable.Rows.Add(dr);
                }
            }
            catch (Exception ex)
            {
                dr = serviceBroker.ServicePackage.ResultTable.NewRow();
                dr["responsestatus"]            = ResponseStatus.Error;
                dr["responsestatusdescription"] = ex.Message;
                serviceBroker.ServicePackage.ResultTable.Rows.Add(dr);
                return;
            }
            finally
            {
                namespaceManager = null;
            }
        }
Exemple #3
0
        public void CreateQueues(Property[] inputs, RequiredProperties required, Property[] returns, MethodType methodType, ServiceObject serviceObject)
        {
            Utilities.ServiceUtilities serviceUtilities = new Utilities.ServiceUtilities(serviceBroker);
            serviceObject.Properties.InitResultTable();

            NamespaceManager namespaceManager = null;
            QueueDescription ReturnQueue      = null;

            try
            {
                string queuepath = string.Empty;
                if (inputs.Length == 0)
                {
                    queuepath = serviceObject.MetaData.DisplayName;
                }
                else
                {
                    queuepath = inputs.Where(p => p.Name.Equals("queue")).First().Value.ToString();
                }

                namespaceManager = serviceUtilities.GetNamespaceManager(inputs.Where(p => p.Name.Equals("requesttimeout")).FirstOrDefault());

                if (serviceObject.Methods[0].Name.Equals("createqueuefulldetails"))
                {
                    QueueDescription Queue = new QueueDescription(queuepath);

                    foreach (Property prop in inputs)
                    {
                        if (prop.Value != null)
                        {
                            switch (prop.Name)
                            {
                            case "queue":
                                Queue.Path = queuepath;
                                break;

                            case "defaultmessagetimetolive":
                                Queue.DefaultMessageTimeToLive = new TimeSpan(long.Parse(prop.Value.ToString()) * TimeSpan.TicksPerSecond);
                                break;

                            case "duplicatedetectionhistorytimewindow":
                                Queue.DuplicateDetectionHistoryTimeWindow = new TimeSpan(long.Parse(prop.Value.ToString()) * TimeSpan.TicksPerSecond);
                                break;

                            case "lockduration":
                                Queue.LockDuration = new TimeSpan(long.Parse(prop.Value.ToString()) * TimeSpan.TicksPerSecond);
                                break;

                            case "maxsizeinmegabytes":
                                Queue.MaxSizeInMegabytes = long.Parse(prop.Value.ToString());
                                break;

                            case "enabledeadletteringonmessageexpiration":
                                Queue.EnableDeadLetteringOnMessageExpiration = bool.Parse(prop.Value.ToString());
                                break;

                            case "requiresduplicatedetection":
                                Queue.RequiresDuplicateDetection = bool.Parse(prop.Value.ToString());
                                break;

                            case "requiressession":
                                Queue.RequiresSession = bool.Parse(prop.Value.ToString());
                                break;
                            }
                        }
                    }

                    ReturnQueue = namespaceManager.CreateQueue(Queue);
                }
                else
                {
                    // create with defaults
                    ReturnQueue = namespaceManager.CreateQueue(queuepath);
                }

                foreach (Property prop in returns)
                {
                    switch (prop.Name)
                    {
                    case "defaultmessagetimetolive":
                        prop.Value = ReturnQueue.DefaultMessageTimeToLive.TotalSeconds;
                        break;

                    case "duplicatedetectionhistorytimewindow":
                        prop.Value = ReturnQueue.DuplicateDetectionHistoryTimeWindow.TotalSeconds;
                        break;

                    case "enablebatchedoperations":
                        prop.Value = ReturnQueue.EnableBatchedOperations;
                        break;

                    case "enabledeadletteringonmessageexpiration":
                        prop.Value = ReturnQueue.EnableDeadLetteringOnMessageExpiration;
                        break;

                    case "isreadonly":
                        prop.Value = ReturnQueue.IsReadOnly;
                        break;

                    case "lockduration":
                        prop.Value = ReturnQueue.LockDuration.TotalSeconds;
                        break;

                    case "maxdeliverycount":
                        prop.Value = ReturnQueue.MaxDeliveryCount;
                        break;

                    case "maxsizeinmegabytes":
                        prop.Value = ReturnQueue.MaxSizeInMegabytes;
                        break;

                    case "messagecount":
                        prop.Value = ReturnQueue.MessageCount;
                        break;

                    case "queue":
                        prop.Value = ReturnQueue.Path;
                        break;

                    case "requiresduplicatedetection":
                        prop.Value = ReturnQueue.RequiresDuplicateDetection;
                        break;

                    case "requiressession":
                        prop.Value = ReturnQueue.RequiresSession;
                        break;

                    case "sizeinbytes":
                        prop.Value = ReturnQueue.SizeInBytes;
                        break;
                    }
                }
                returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Success;
                returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = "Queue created";
            }
            catch (Exception ex)
            {
                returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Error;
                returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = ex.Message;
            }
            finally
            {
                namespaceManager = null;
            }

            serviceObject.Properties.BindPropertiesToResultTable();
        }
        public void ListEventHubs(Property[] inputs, RequiredProperties required, Property[] returns, MethodType methodType, ServiceObject serviceObject)
        {
            Utilities.ServiceUtilities serviceUtilities = new Utilities.ServiceUtilities(serviceBroker);
            serviceObject.Properties.InitResultTable();
            NamespaceManager namespaceManager = null;

            System.Data.DataRow dr;
            try
            {
                namespaceManager = serviceUtilities.GetNamespaceManager(inputs.Where(p => p.Name.Equals("requesttimeout")).FirstOrDefault());
                IEnumerable <EventHubDescription> EHs = namespaceManager.GetEventHubs();

                foreach (EventHubDescription EventHub in EHs)
                {
                    dr = serviceBroker.ServicePackage.ResultTable.NewRow();
                    foreach (Property prop in returns)
                    {
                        switch (prop.Name)
                        {
                        case "createdat":
                            dr[prop.Name] = EventHub.CreatedAt;
                            break;

                        case "isreadonly":
                            dr[prop.Name] = EventHub.IsReadOnly;
                            break;

                        case "messageretentionindays":
                            prop.Value = EventHub.MessageRetentionInDays;
                            break;

                        case "partitioncount":
                            dr[prop.Name] = EventHub.PartitionCount;
                            break;

                        case "partitionids":
                            dr[prop.Name] = string.Join(",", EventHub.PartitionIds);
                            break;

                        case "path":
                            dr[prop.Name] = EventHub.Path;
                            break;

                        case "status":
                            dr[prop.Name] = EventHub.Status.ToString();
                            break;

                        case "updatedat":
                            dr[prop.Name] = EventHub.UpdatedAt;
                            break;

                        case "usermetadata":
                            dr[prop.Name] = EventHub.UserMetadata;
                            break;

                        case "eventhub":
                            dr[prop.Name] = EventHub.Path;
                            break;
                        }
                    }
                    dr["responsestatus"]            = ResponseStatus.Success;
                    dr["responsestatusdescription"] = "Event Hubs listed";
                    serviceBroker.ServicePackage.ResultTable.Rows.Add(dr);
                }
            }
            catch (Exception ex)
            {
                dr = serviceBroker.ServicePackage.ResultTable.NewRow();
                dr["responsestatus"]            = ResponseStatus.Error;
                dr["responsestatusdescription"] = ex.Message;
                serviceBroker.ServicePackage.ResultTable.Rows.Add(dr);
                return;
            }
            finally
            {
                namespaceManager = null;
            }
        }
        public void CreateEventHubs(Property[] inputs, RequiredProperties required, Property[] returns, MethodType methodType, ServiceObject serviceObject)
        {
            Utilities.ServiceUtilities serviceUtilities = new Utilities.ServiceUtilities(serviceBroker);
            serviceObject.Properties.InitResultTable();

            NamespaceManager    namespaceManager = null;
            EventHubDescription ReturnEventHub   = null;

            try
            {
                string eventhubpath = string.Empty;
                if (inputs.Length == 0)
                {
                    eventhubpath = serviceObject.MetaData.DisplayName;
                }
                else
                {
                    eventhubpath = inputs.Where(p => p.Name.Equals("eventhub")).First().Value.ToString();
                }

                namespaceManager = serviceUtilities.GetNamespaceManager(inputs.Where(p => p.Name.Equals("requesttimeout")).FirstOrDefault());

                if (serviceObject.Methods[0].Name.Equals("createeventhubfulldetails"))
                {
                    EventHubDescription EventHub = new EventHubDescription(eventhubpath);

                    foreach (Property prop in inputs)
                    {
                        if (prop.Value != null)
                        {
                            switch (prop.Name)
                            {
                            case "eventhub":
                                EventHub.Path = eventhubpath;
                                break;

                            case "partitioncount":
                                EventHub.PartitionCount = int.Parse(prop.Value.ToString());
                                break;

                            case "messageretentionindays":
                                EventHub.MessageRetentionInDays = int.Parse(prop.Value.ToString());
                                break;
                            }
                        }
                    }

                    ReturnEventHub = namespaceManager.CreateEventHub(EventHub);
                }
                else
                {
                    // create with defaults
                    ReturnEventHub = namespaceManager.CreateEventHub(eventhubpath);
                }

                foreach (Property prop in returns)
                {
                    switch (prop.Name)
                    {
                    case "createdat":
                        prop.Value = ReturnEventHub.CreatedAt;
                        break;

                    case "isreadonly":
                        prop.Value = ReturnEventHub.IsReadOnly;
                        break;

                    case "messageretentionindays":
                        prop.Value = ReturnEventHub.MessageRetentionInDays;
                        break;

                    case "partitioncount":
                        prop.Value = ReturnEventHub.PartitionCount;
                        break;

                    case "partitionids":
                        prop.Value = string.Join(",", ReturnEventHub.PartitionIds);
                        break;

                    case "path":
                        prop.Value = ReturnEventHub.Path;
                        break;

                    case "status":
                        prop.Value = ReturnEventHub.Status.ToString();
                        break;

                    case "updatedat":
                        prop.Value = ReturnEventHub.UpdatedAt;
                        break;

                    case "usermetadata":
                        prop.Value = ReturnEventHub.UserMetadata;
                        break;
                    }
                }
                returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Success;
                returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = "Event Hub created";
            }
            catch (Exception ex)
            {
                returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Error;
                returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = ex.Message;
            }
            finally
            {
                namespaceManager = null;
            }

            serviceObject.Properties.BindPropertiesToResultTable();
        }
        public void SendEventHubMessage(Property[] inputs, RequiredProperties required, Property[] returns, MethodType methodType, ServiceObject serviceObject)
        {
            Utilities.ServiceUtilities serviceUtilities = new Utilities.ServiceUtilities(serviceBroker);
            serviceObject.Properties.InitResultTable();

            EventHubClient Client    = null;
            EventData      eventData = null;

            try
            {
                string eventhubpath = string.Empty;
                if (inputs.Length == 0)
                {
                    eventhubpath = serviceObject.MetaData.DisplayName;
                }
                else
                {
                    eventhubpath = inputs.Where(p => p.Name.Equals("eventhub")).First().Value.ToString();
                }

                if (inputs.Where(p => p.Name.Equals("data")).Count() > 0)
                {
                    string msgBody = inputs.Where(p => p.Name.Equals("data")).First().Value.ToString();
                    eventData = new EventData(new MemoryStream(Encoding.UTF8.GetBytes(msgBody)));
                }
                else
                {
                    throw new Exception("Data is required to send an Event Hub Message");
                }

                Client = serviceUtilities.GetEventHubClient(eventhubpath);
                Client.Send(eventData);


                //foreach (Property prop in returns)
                //{
                //    switch (prop.Name)
                //    {
                //        case "createdat":
                //            prop.Value = Client.CreatedAt;
                //            break;
                //        case "isreadonly":
                //            prop.Value = Client.IsReadOnly;
                //            break;
                //        case "messageretentionindays":
                //            prop.Value = Client.MessageRetentionInDays;
                //            break;
                //        case "partitioncount":
                //            prop.Value = Client.PartitionCount;
                //            break;
                //        case "partitionids":
                //            prop.Value = string.Join(",", Client.PartitionIds);
                //            break;
                //        case "path":
                //            prop.Value = Client.Path;
                //            break;
                //        case "status":
                //            prop.Value = Client.Status.ToString();
                //            break;
                //        case "updatedat":
                //            prop.Value = Client.UpdatedAt;
                //            break;
                //        case "usermetadata":
                //            prop.Value = Client.UserMetadata;
                //            break;
                //    }
                //}

                returns.Where(p => p.Name.Equals("eventhub")).First().Value                  = inputs.Where(p => p.Name.Equals("eventhub")).First().Value.ToString();
                returns.Where(p => p.Name.Equals("data")).First().Value                      = inputs.Where(p => p.Name.Equals("data")).First().Value.ToString();
                returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Success;
                returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = "Event Hub message sent";
            }
            catch (Exception ex)
            {
                returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Error;
                returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = ex.Message;
            }
            finally
            {
                try
                {
                    Client.Close();
                }
                catch { }
                Client = null;
            }
            serviceObject.Properties.BindPropertiesToResultTable();
        }
        public void ListTopics(Property[] inputs, RequiredProperties required, Property[] returns, MethodType methodType, ServiceObject serviceObject)
        {
            Utilities.ServiceUtilities serviceUtilities = new Utilities.ServiceUtilities(serviceBroker);
            serviceObject.Properties.InitResultTable();
            System.Data.DataRow dr;
            NamespaceManager    namespaceManager = null;

            try
            {
                namespaceManager = serviceUtilities.GetNamespaceManager(inputs.Where(p => p.Name.Equals("requesttimeout")).FirstOrDefault());
                IEnumerable <TopicDescription> Ts = namespaceManager.GetTopics();

                foreach (TopicDescription Topic in Ts)
                {
                    dr = serviceBroker.ServicePackage.ResultTable.NewRow();
                    foreach (Property prop in returns)
                    {
                        switch (prop.Name)
                        {
                        case "defaultmessagetimetolive":
                            dr[prop.Name] = Topic.DefaultMessageTimeToLive.TotalSeconds;
                            break;

                        case "duplicatedetectionhistorytimewindow":
                            dr[prop.Name] = Topic.DuplicateDetectionHistoryTimeWindow.TotalSeconds;
                            break;

                        case "enablebatchedoperations":
                            prop.Value = Topic.EnableBatchedOperations;
                            break;

                        case "isreadonly":
                            dr[prop.Name] = Topic.IsReadOnly;
                            break;

                        case "maxsizeinmegabytes":
                            dr[prop.Name] = Topic.MaxSizeInMegabytes;
                            break;

                        case "topic":
                            dr[prop.Name] = Topic.Path;
                            break;

                        case "requiresduplicatedetection":
                            dr[prop.Name] = Topic.RequiresDuplicateDetection;
                            break;

                        case "sizeinbytes":
                            dr[prop.Name] = Topic.SizeInBytes;
                            break;
                        }
                    }
                    dr["responsestatus"]            = ResponseStatus.Success;
                    dr["responsestatusdescription"] = "Topics listed";
                    serviceBroker.ServicePackage.ResultTable.Rows.Add(dr);
                }
            }
            catch (Exception ex)
            {
                dr = serviceBroker.ServicePackage.ResultTable.NewRow();
                dr["responsestatus"]            = ResponseStatus.Error;
                dr["responsestatusdescription"] = ex.Message;
                serviceBroker.ServicePackage.ResultTable.Rows.Add(dr);
                return;
            }
            finally
            {
                namespaceManager = null;
            }
        }
        public void LoadTopic(Property[] inputs, RequiredProperties required, Property[] returns, MethodType methodType, ServiceObject serviceObject)
        {
            Utilities.ServiceUtilities serviceUtilities = new Utilities.ServiceUtilities(serviceBroker);
            serviceObject.Properties.InitResultTable();
            NamespaceManager namespaceManager = null;
            TopicDescription Topic            = null;

            try
            {
                string topicpath = string.Empty;
                if (inputs.Length == 0)
                {
                    topicpath = serviceObject.MetaData.DisplayName;
                }
                else
                {
                    topicpath = inputs.Where(p => p.Name.Equals("topic")).First().Value.ToString();
                }

                namespaceManager = serviceUtilities.GetNamespaceManager(inputs.Where(p => p.Name.Equals("requesttimeout")).FirstOrDefault());
                Topic            = namespaceManager.GetTopic(topicpath);

                foreach (Property prop in returns)
                {
                    switch (prop.Name)
                    {
                    case "defaultmessagetimetolive":
                        prop.Value = Topic.DefaultMessageTimeToLive.TotalSeconds;
                        break;

                    case "duplicatedetectionhistorytimewindow":
                        prop.Value = Topic.DuplicateDetectionHistoryTimeWindow.TotalSeconds;
                        break;

                    case "enablebatchedoperations":
                        prop.Value = Topic.EnableBatchedOperations;
                        break;

                    case "isreadonly":
                        prop.Value = Topic.IsReadOnly;
                        break;

                    case "maxsizeinmegabytes":
                        prop.Value = Topic.MaxSizeInMegabytes;
                        break;

                    case "topic":
                        prop.Value = Topic.Path;
                        break;

                    case "requiresduplicatedetection":
                        prop.Value = Topic.RequiresDuplicateDetection;
                        break;

                    case "sizeinbytes":
                        prop.Value = Topic.SizeInBytes;
                        break;
                    }
                    returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Success;
                    returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = "Topic loaded";
                }
            }
            catch (Exception ex)
            {
                returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Error;
                returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = ex.Message;
            }
            finally
            {
                namespaceManager = null;
                Topic            = null;
            }

            serviceObject.Properties.BindPropertiesToResultTable();
        }
        public void ListSubscriptions(Property[] inputs, RequiredProperties required, Property[] returns, MethodType methodType, ServiceObject serviceObject)
        {
            Utilities.ServiceUtilities serviceUtilities = new Utilities.ServiceUtilities(serviceBroker);
            serviceObject.Properties.InitResultTable();
            System.Data.DataRow dr;
            NamespaceManager    namespaceManager = null;

            try
            {
                string topicpath = string.Empty;
                if (inputs.Length == 0)
                {
                    topicpath = serviceObject.MetaData.DisplayName;
                }
                else
                {
                    topicpath = inputs.Where(p => p.Name.Equals("topic")).First().Value.ToString();
                }

                namespaceManager = serviceUtilities.GetNamespaceManager(inputs.Where(p => p.Name.Equals("requesttimeout")).FirstOrDefault());
                IEnumerable <SubscriptionDescription> Ss = namespaceManager.GetSubscriptions(topicpath);

                foreach (SubscriptionDescription Subscription in Ss)
                {
                    dr = serviceBroker.ServicePackage.ResultTable.NewRow();
                    foreach (Property prop in returns)
                    {
                        switch (prop.Name)
                        {
                        case "defaultmessagetimetolive":
                            dr[prop.Name] = Subscription.DefaultMessageTimeToLive.TotalSeconds;
                            break;

                        case "enablebatchedoperations":
                            dr[prop.Name] = Subscription.EnableBatchedOperations;
                            break;

                        case "enabledeadletteringonfilterevaluationexceptions":
                            dr[prop.Name] = Subscription.EnableDeadLetteringOnFilterEvaluationExceptions;
                            break;

                        case "enabledeadletteringonmessageexpiration":
                            dr[prop.Name] = Subscription.EnableDeadLetteringOnMessageExpiration;
                            break;

                        case "isreadonly":
                            dr[prop.Name] = Subscription.IsReadOnly;
                            break;

                        case "lockduration":
                            dr[prop.Name] = Subscription.LockDuration.TotalSeconds;
                            break;

                        case "maxdeliverycount":
                            dr[prop.Name] = Subscription.MaxDeliveryCount;
                            break;

                        case "messagecount":
                            dr[prop.Name] = Subscription.MessageCount;
                            break;

                        case "subscription":
                            dr[prop.Name] = Subscription.Name;
                            break;

                        case "requiressession":
                            dr[prop.Name] = Subscription.RequiresSession;
                            break;

                        case "topic":
                            dr[prop.Name] = Subscription.TopicPath;
                            break;
                        }
                    }
                    serviceBroker.ServicePackage.ResultTable.Rows.Add(dr);
                }
            }
            catch (Exception ex)
            {
                dr = serviceBroker.ServicePackage.ResultTable.NewRow();
                dr["responsestatus"]            = ResponseStatus.Error;
                dr["responsestatusdescription"] = ex.Message;
                serviceBroker.ServicePackage.ResultTable.Rows.Add(dr);
                return;
            }
            finally
            {
                namespaceManager = null;
            }
        }
        public void LoadSubscription(Property[] inputs, RequiredProperties required, Property[] returns, MethodType methodType, ServiceObject serviceObject)
        {
            Utilities.ServiceUtilities serviceUtilities = new Utilities.ServiceUtilities(serviceBroker);
            serviceObject.Properties.InitResultTable();
            NamespaceManager        namespaceManager = null;
            SubscriptionDescription Subscription     = null;

            try
            {
                string subscriptionpath = string.Empty;
                if (inputs.Length == 1)
                {
                    subscriptionpath = serviceObject.MetaData.DisplayName;
                }
                else
                {
                    subscriptionpath = inputs.Where(p => p.Name.Equals("subscription")).First().Value.ToString();
                }

                string topicpath = string.Empty;
                topicpath = inputs.Where(p => p.Name.Equals("topic")).First().Value.ToString();

                namespaceManager = serviceUtilities.GetNamespaceManager(inputs.Where(p => p.Name.Equals("requesttimeout")).FirstOrDefault());
                Subscription     = namespaceManager.GetSubscription(topicpath, subscriptionpath);

                foreach (Property prop in returns)
                {
                    switch (prop.Name)
                    {
                    case "defaultmessagetimetolive":
                        prop.Value = Subscription.DefaultMessageTimeToLive.TotalSeconds;
                        break;

                    case "enablebatchedoperations":
                        prop.Value = Subscription.EnableBatchedOperations;
                        break;

                    case "enabledeadletteringonfilterevaluationexceptions":
                        prop.Value = Subscription.EnableDeadLetteringOnFilterEvaluationExceptions;
                        break;

                    case "enabledeadletteringonmessageexpiration":
                        prop.Value = Subscription.EnableDeadLetteringOnMessageExpiration;
                        break;

                    case "isreadonly":
                        prop.Value = Subscription.IsReadOnly;
                        break;

                    case "lockduration":
                        prop.Value = Subscription.LockDuration.TotalSeconds;
                        break;

                    case "maxdeliverycount":
                        prop.Value = Subscription.MaxDeliveryCount;
                        break;

                    case "messagecount":
                        prop.Value = Subscription.MessageCount;
                        break;

                    case "subscription":
                        prop.Value = Subscription.Name;
                        break;

                    case "requiressession":
                        prop.Value = Subscription.RequiresSession;
                        break;

                    case "topic":
                        prop.Value = Subscription.TopicPath;
                        break;
                    }
                }
                returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Success;
                returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = "Subscription loaded";
            }
            catch (Exception ex)
            {
                returns.Where(p => p.Name.Equals("responsestatus")).First().Value            = ResponseStatus.Error;
                returns.Where(p => p.Name.Equals("responsestatusdescription")).First().Value = ex.Message;
            }
            finally
            {
                namespaceManager = null;
                Subscription     = null;
            }
            serviceObject.Properties.BindPropertiesToResultTable();
        }