When a channel has one receiver and multiple senders, such a channel is called a port. Your task is to implement an API package port_channel in Java. Then, you have to illustrate the capabilities of this API package by using it in a virtual classroom.
Package port_channel should have at least two classes, ChannelPort and ChannelEndPoint.
Both at least have send and receive methods. ChannelPort has additional broadcast method.
Operation receive must be synchronous (blocking); operations send and broadcast must be
asynchronous. Since a ChannelPort can have multiple asynchronous senders, the receive
method of ChannelPort must be able to get any message from any sender in unpredictable
order. Adding extra useful features are encouraged.
In a virtual classroom, a teacher has to listen to every student’s message while he/she is
lecturing (broadcasting messages to every student). In a more realistic classroom, a student
needs to request speaking (to raise hand) and then speak upon the teacher’s approval. A
student speaks to the whole class rather than to the teacher only. Adding these additional
realistic features are encouraged.