public List <OutContent> ProcessSubscription(string uri, string dialogId, BatchSubscribe batchSubs, uint expires, string endpointId, object param) { Rlmi rlmi = null; List <Categories> categories; List <OutContent> multipart = null; lock (sync) { try { Subscription subscription; if (subscriptions.TryGetValue(dialogId, out subscription) == false) { subscription = new Subscription(uri, endpointId, param); subscriptions.Add(dialogId, subscription); } subscription.Process(batchSubs, expireList, expires, out rlmi, out categories); if (rlmi != null) { multipart = new List <OutContent>(); multipart.Add(new OutContent(rlmi, this.sync)); if (categories != null) { categories.ForEach(item => multipart.Add(new OutContent(item, this.sync))); } } return(multipart); } catch (Exception e) { throw new EnhancedPresenceException("ProcessSubscription failed", e); } finally { if (rlmi != null) { rlmi.Dispose(); } } } }