The application is an implementation of the algorithm which consumes data from two channels and output them as pairs in the order of arrival.
There are two separate infinite sources of data.
Data is arriving "simultaneously" into the system as two streams via two channels: Channel 1 and Channel 2.
The data could be of three types: R, G and B.
Each data element should have two properties: channelNumber and uniqueID.
These three types of Data are arriving in a random sequence on the two channels.
The program creates pairs of "same types" arriving on two channels in their "order of arrival".