/// <summary> /// Called when the close button is clicked. /// </summary> private void DoneBTN_Click(object sender, System.EventArgs e) { try { m_areas = AreaSourcesListCTRL.GetAreas(); m_sources = AreaSourcesListCTRL.GetSources(); // don't activate until all the filters are applied. bool active = m_state.Active; bool update = m_subscription != null; // create new subscription. if (m_subscription == null) { m_state.Active = false; m_state.ClientHandle = Guid.NewGuid().ToString(); m_subscription = (Ae.TsCAeSubscription)m_server.CreateSubscription(m_state); } // update existing subscription. else { m_subscription.ModifyState(((int)TsCAeStateMask.All & ~(int)TsCAeStateMask.Active), m_state); } // select filters. m_filters.Areas.Clear(); m_filters.Areas.AddRange(m_areas); m_filters.Sources.Clear(); m_filters.Sources.AddRange(m_sources); m_subscription.SetFilters(m_filters); // select attributes. IDictionaryEnumerator enumerator = m_attributes.GetEnumerator(); while (enumerator.MoveNext()) { int categoryID = (int)enumerator.Key; OpcClientSdk.Ae.TsCAeAttributeCollection attributeIDs = (OpcClientSdk.Ae.TsCAeAttributeCollection)enumerator.Value; m_subscription.SelectReturnedAttributes(categoryID, attributeIDs.ToArray()); } // activate the subscription. if (active || update) { m_state.Active = active; m_subscription.ModifyState((int)TsCAeStateMask.Active, m_state); } // close the dialog. DialogResult = DialogResult.OK; Close(); } catch (Exception exception) { MessageBox.Show(exception.Message); } }
/// <summary> /// Establishes a subscription based on the template provided. /// </summary> private Ae.TsCAeSubscription EstablishSubscription(Ae.TsCAeSubscription template) { ITsCAeSubscription remoteServer = null; try { // create remote object. remoteServer = ((ITsCAeServer)_server).CreateSubscription(template.State); if (remoteServer == null) { return(null); } // create wrapper. Ae.TsCAeSubscription subscription = new Ae.TsCAeSubscription(this, remoteServer, template.State); // set filters. subscription.SetFilters(template.Filters); // set attributes. IDictionaryEnumerator enumerator = template.Attributes.GetEnumerator(); while (enumerator.MoveNext()) { subscription.SelectReturnedAttributes( (int)enumerator.Key, ((Ae.TsCAeSubscription.AttributeCollection)enumerator.Value).ToArray()); } // return new subscription return(subscription); } catch { if (remoteServer != null) { remoteServer.Dispose(); remoteServer = null; } } // return null. return(null); }