Action towards a program instance

Namespace:  Linxter.Common.Entities
Assembly:  Linxter.Common.Entities (in Linxter.Common.Entities.dll) Version: 1.5.0.0 (1.5.0.0)

Syntax

C#
public enum ChannelAction
Visual Basic (Declaration)
Public Enumeration ChannelAction

Members

Member nameDescription
Request
Request communication channel
Accept
Accept communication channel
Delete
Delete communication channel
Decline
Decline communication channel
Block
Block communication channel request
Unblock
Unblock communication channel request
DeletePending
Delete an pending communication channel
Close
Close an open channel
InstanceInfoChanged
Information about the linked instance changed
ListRefreshed
The list of communication channels has been refreshed by the ISB
Unknown

Examples

CopyC#
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);
    }
}
CopyVB.NET
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

See Also