/**
* MailBox interface representing a queue where messages
* are stored for Concerns before they are processed.
* @interface
*/
class MailBox {
/**
* setEnqueueListener sets the EnqueueListener for this MailBox.
* The EnqueueListener is expected to be a Dispatcher that will
* react to new messages being put on the mail queue.
* @param {EnqueueListener} listener
*/
setEnqueListener() {
}
/**
* enqueue puts a message into the queue and alerts the
* listener of the change. Messages may be stringified for
* remote storage.
* @param {Concern} to
* @param {Reference} from
* @param {*} message
*/
enqueue(to, from, message) {
}
/**
* dequeue furnishes the next message to be processed.
* @returns {Envelope}
*/
dequeue() {
}
}
/**
* MailBoxListener is the interface of classes interested in reacting to
* enqueue events on the MailBox.
* @interface
*/
class EnqueueListener {
/**
* onEnqueue is called when a new item has been enqueued by
* the MailBox.
* @param {MailBox} box
*/
onEnqueue() {
}
}
MailBox.EnqueueListener = EnqueueListener;
export default MailBox