An event occurs when the list of open communication channel has been changed. This could be due to an outgoing request made by your program or due to actions taken on the ISB or Web Manager.
Namespace:
Linxter.SDKAssembly: Linxter.SDK (in Linxter.SDK.dll) Version: 1.5.0.0 (1.5.0.0)
Syntax
| C# |
|---|
event Action<CommunicationChannelEventArgs> OpenCommunicationChannelsChanged |
| Visual Basic (Declaration) |
|---|
Event OpenCommunicationChannelsChanged As Action(Of CommunicationChannelEventArgs) |
Examples
private List<ProgramInstanceInfo> m_blockedPrograms = new List<ProgramInstanceInfo>(); private List<ProgramInstanceInfo> m_activeChannels = new List<ProgramInstanceInfo>(); private ILinxterCommunicationChannel m_channel; public void SetUpChannelEvents(ILinxterCommunicationChannel channel) { // hook communication channel events m_channel = channel; channel.BlockedInstancesChanged += new Action<Linxter.SDK.EventArgs.CommunicationChannelEventArgs>(OnBlockedInstancesChanged); channel.ChannelActionFailed += new Action<Linxter.SDK.EventArgs.ChannelActionFailEventArgs>(OnChannelActionFailed); channel.IncomingChannelRequestsChanged += new Action<Linxter.SDK.EventArgs.CommunicationChannelEventArgs>(OnIncomingChannelRequestsChanged); channel.OpenCommunicationChannelsChanged += new Action<Linxter.SDK.EventArgs.CommunicationChannelEventArgs>(OnOpenCommunicationChannelsChanged); channel.OutgoingChannelRequestsChanged += new Action<Linxter.SDK.EventArgs.CommunicationChannelEventArgs>(OnOutgoingChannelRequestsChanged); } void OnBlockedInstancesChanged(Linxter.SDK.EventArgs.CommunicationChannelEventArgs obj) { // update my local list of blocked instances if (obj.Action.Equals(ChannelAction.Unblock)) { if (m_blockedPrograms.Contains(obj.ProgramInstanceInfo)) { m_blockedPrograms.Remove(obj.ProgramInstanceInfo); } } else if (obj.Action.Equals(ChannelAction.Block)) { if (!m_blockedPrograms.Contains(obj.ProgramInstanceInfo)) { m_blockedPrograms.Add(obj.ProgramInstanceInfo); } } } void OnChannelActionFailed(Linxter.SDK.EventArgs.ChannelActionFailEventArgs obj) { string channelActionSource = string.Empty; switch (obj.ActionSource) { case Linxter.SDK.EventArgs.ChannelActionSource.Instance: channelActionSource = "Instance"; break; case Linxter.SDK.EventArgs.ChannelActionSource.ISB: channelActionSource = "ISB"; break; case Linxter.SDK.EventArgs.ChannelActionSource.WebManager: channelActionSource = "Web Manager"; break; } // notify user when channel request fails MessageBox.Show(string.Format("Communication Channel Action {0} for ProgramInstanceId '{1}' failed. Error message: {2}", obj.Action, obj.TargetInstanceID, obj.ErrorMessage), "Channel Action Failure", MessageBoxButtons.OK, MessageBoxIcon.Error); } void OnIncomingChannelRequestsChanged(Linxter.SDK.EventArgs.CommunicationChannelEventArgs obj) { ChannelAction action = obj.Action; string status = string.Empty; switch (action) { case ChannelAction.Accept: // a recent request was accepted status = string.Format("Communication channel request for ProgramInstanceId '{0}' was accepted.", obj.ProgramInstanceInfo.ProgramInstanceId.ToString()); break; case ChannelAction.Block: // this program was blocked status = string.Format("Program Instance '{0}' blocked all connections from this program instance.", obj.ProgramInstanceInfo.ProgramInstanceAlias); break; case ChannelAction.Decline: status = string.Format("Channel request to Program Instance '{0}' was declined.", obj.ProgramInstanceInfo.ProgramInstanceAlias); break; case ChannelAction.Request: // it's a new request status = string.Format("New incoming request from {0}. Their message:\n{1}."); break; } MessageBox.Show(status, "Channel Request Status", MessageBoxButtons.OK, MessageBoxIcon.Information); } void OnOpenCommunicationChannelsChanged(Linxter.SDK.EventArgs.CommunicationChannelEventArgs obj) { // update listbox containing active channels ListBox openChannelsList = this.openChannelsListBox; openChannelsList.Items.Clear(); foreach (ProgramInstanceInfo item in m_channel.OpenCommunicationChannels) { openChannelsList.Items.Add(item.ProgramInstanceAlias); } } void OnOutgoingChannelRequestsChanged(Linxter.SDK.EventArgs.CommunicationChannelEventArgs obj) { // update listbox containing outbound requests ListBox outboundRequests = this.outgoingRequestsListBox; outboundRequests.Items.Clear(); foreach (ChannelRequestInfo item in m_channel.OutgoingChannelRequests) { outboundRequests.Items.Add(item.Receiver.ProgramInstanceAlias); } }
Private m_blockedPrograms As New List(Of ProgramInstanceInfo)() Private m_activeChannels As New List(Of ProgramInstanceInfo)() Private m_channel As ILinxterCommunicationChannel Public Sub SetUpChannelEvents(ByVal channel As ILinxterCommunicationChannel) ' hook communication channel events m_channel = channel AddHandler channel.BlockedInstancesChanged, AddressOf OnBlockedInstancesChanged AddHandler channel.ChannelActionFailed, AddressOf OnChannelActionFailed AddHandler channel.IncomingChannelRequestsChanged, AddressOf OnIncomingChannelRequestsChanged AddHandler channel.OpenCommunicationChannelsChanged, AddressOf OnOpenCommunicationChannelsChanged AddHandler channel.OutgoingChannelRequestsChanged, AddressOf OnOutgoingChannelRequestsChanged End Sub Private Sub OnBlockedInstancesChanged(ByVal obj As Linxter.SDK.EventArgs.CommunicationChannelEventArgs) ' update my local list of blocked instances If obj.Action.Equals(ChannelAction.Unblock) Then If m_blockedPrograms.Contains(obj.ProgramInstanceInfo) Then m_blockedPrograms.Remove(obj.ProgramInstanceInfo) End If ElseIf obj.Action.Equals(ChannelAction.Block) Then If Not m_blockedPrograms.Contains(obj.ProgramInstanceInfo) Then m_blockedPrograms.Add(obj.ProgramInstanceInfo) End If End If End Sub Private Sub OnChannelActionFailed(ByVal obj As Linxter.SDK.EventArgs.ChannelActionFailEventArgs) Dim channelActionSource As String = String.Empty Select Case obj.ActionSource Case Linxter.SDK.EventArgs.ChannelActionSource.Instance channelActionSource = "Instance" Case Linxter.SDK.EventArgs.ChannelActionSource.ISB channelActionSource = "ISB" Case Linxter.SDK.EventArgs.ChannelActionSource.WebManager channelActionSource = "Web Manager" End Select ' notify user when channel request fails MessageBox.Show(String.Format("Communication Channel Action {0} for ProgramInstanceId '{1}' failed. Error message: {2}", obj.Action, obj.TargetInstanceID, obj.ErrorMessage), "Channel Action Failure", MessageBoxButtons.OK, MessageBoxIcon.Error) End Sub Private Sub OnIncomingChannelRequestsChanged(ByVal obj As Linxter.SDK.EventArgs.CommunicationChannelEventArgs) Dim action As ChannelAction = obj.Action Dim status As String = String.Empty Select Case action Case ChannelAction.Accept ' a recent request was accepted status = String.Format("Communication channel request for ProgramInstanceId '{0}' was accepted.", obj.ProgramInstanceInfo.ProgramInstanceId.ToString()) Case ChannelAction.Block ' this program was blocked status = String.Format("Program Instance '{0}' blocked all connections from this program instance.", obj.ProgramInstanceInfo.ProgramInstanceAlias) Case ChannelAction.Decline status = String.Format("Channel request to Program Instance '{0}' was declined.", obj.ProgramInstanceInfo.ProgramInstanceAlias) Case ChannelAction.Request ' it's a new request status = String.Format("New incoming request from {0}. Their message:" & vbLf & "{1}.") End Select MessageBox.Show(status, "Channel Request Status", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub Private Sub OnOpenCommunicationChannelsChanged(ByVal obj As Linxter.SDK.EventArgs.CommunicationChannelEventArgs) ' update listbox containing active channels Dim openChannelsList As ListBox = Me.openChannelsListBox openChannelsList.Items.Clear() For Each item As ProgramInstanceInfo In m_channel.OpenCommunicationChannels openChannelsList.Items.Add(item.ProgramInstanceAlias) Next item End Sub Private Sub OnOutgoingChannelRequestsChanged(ByVal obj As Linxter.SDK.EventArgs.CommunicationChannelEventArgs) ' update listbox containing outbound requests Dim outboundRequests As ListBox = Me.outgoingRequestsListBox outboundRequests.Items.Clear() For Each item As ChannelRequestInfo In m_channel.OutgoingChannelRequests outboundRequests.Items.Add(item.Receiver.ProgramInstanceAlias) Next item End Sub