An event occurs when the channel request has failed. This could be due to Linxter Services Bus (ISB). See more details in ErrorMessage property.
Namespace:
Linxter.SDKAssembly: Linxter.SDK (in Linxter.SDK.dll) Version: 1.5.0.0 (1.5.0.0)
Syntax
| C# |
|---|
event Action<ChannelActionFailEventArgs> ChannelActionFailed |
| Visual Basic (Declaration) |
|---|
Event ChannelActionFailed As Action(Of ChannelActionFailEventArgs) |
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