Channel

Channel belongs to a Channel Type ®

[Channel Type = {“Active”, “Passive”}] {All channels are half-duplex. Active channels are sending main packages, passive channels are receiving main packages. A physical server can have several passive channels and several active channels for backward data flows.}

Active Channel is a Channel º

<It’s of active type.>

Passive Channel is a Channel º

<It’s of passive type.>

Active Channel communicates with a Passive Channel º

<Active and passive channels are to work according to one channel policy.>

<<When one of communicated active and passive channels is deleted, the other is to be deleted too.>>

<<If a channel is sending a package, the package is to be received by the appropriate connected channel a bit later.>>

Channel works according to a Channel Policy ®

Channel Policy holds Event Types –

 

Channel. Event Type

Event Type has a Main Package Type ®

Event Type can have an Acknowledgement Package Type ®

Main Package Type is a Package Type º

Acknowledgement Package Type is a Package Type º

Package is of a Package Type ®

 

Channel. Transmission

Channel has a Transmission Mode ®

[Transmission Mode = {“Receiving”, “Sending”}]

Channel can have a Received Package ®

Channel can have a Sending Package ®

Channel has a Channel State ®

 

Active Channel State

Transmission Mode

Sending Package

Received Package

Idle

Sending

Null

Null

Sending

Sending

A main package according to Policy

Null

Receiving

Receiving

A main package according to Policy

Null

Idle Received

Sending

A main package according to Policy

An ack. package according to Policy

Error

Any

Other

Other

Passive Channel State

Transmission Mode

Sending Package

Received Package

Receiving

Receiving

Null

Null

Received

Receiving

Null

A main package according to Policy

Sending

Sending

An ack. Package according to Policy

A main package according to Policy

Error

Any

Other

Other

 

<<Correct state transitions for an active channel: Idle -> Sending -> Receiving -> Idle Received -> Sending, Any -> Idle. Correct state transitions for a passive channel: Receiving -> Received -> Sending -> Receiving, Any -> Receiving. Any incorrect state transition (for example, packages not corresponding to policy) cause the Idle state for active channels and the Receiving state for passive channels.>>

Received Package is a Package º

Sending Package is a Package º

 

Channel. Connection

Connection communicates through a Socket º

<Each message of the socket contains: connection configuration reference, channel priority, channel policy reference, channel policy version, a package content.>

Connection consists of Channels ¬

Channel has a Priority ®

<Each channel has a unique channel priority within a connection.>

<The priorities are numbered from one till channels quantity within a connection.>

<<When several channels of one connection is competing, packets are sent through a connection according to channels’ priorities.>>

Client Connection is a Connection º

Server Connection is a Connection º

Client Connection communicates with a Server Connection º

<The communicated connections are to be of one connection configuration.> {So, their contents are to be the same too: channels, channel policies, channel policy versions.}

<<When one of communicated client and server connections is deleted, the other is to be deleted too.>>

Connection is of a Connection Configuration ®

<If the connection is server it has channels according to the connection configuration.>

<If the connection is client it has channels according to the connection configuration with inversed channel types.>

<Channel priorities are the same as those of prototypes.>

 

Channel. Connection Configuration

Connection Configuration consists of Channel Prototypes ¬

Channel Prototype has a Channel Policy ®

Channel Prototype has a server-side Channel Type ®

{Client-side channel type is opposite to the passive-side one.}

Channel Prototype has a Priority ®

 

Channel. Connection Listener

Connection Listener is based on a Connection Configuration ®

Connection Listener has accepted several Server Connections ¬

<All the server connections are of the listener’s connection configuration.>

{Server connections are created only with the help of a connection listener.}

 

Channel. Version

Channel Policy has a Version ®

            {It serves for compatibility checking.}

 

Channel. Connection State

Connection has a Connection State ®

[Connection State = {“New”, “Connected”, “Closed”}]