This class correlates requests with their responses. The caller can choose to get the first response, N responses or all responses (each call can also include a timeout to prevent having to wait forever).
It offers essentially 4 major methods: AddRequest to insert into its hashtable a message keyed by its message ID, AddResponse to add a response macthing the request message ID to the corresponding item's queue in the hashtable, GetResponse to wait until either a response was received or a timeout has occurred and GetResponses to wait until N responses have been received or a timeout has occurred.
The message correlator is for example used by the Dispatcher (2.2.10).