Managing parallel requests in a communications environment supporting serial and parallel request handlers

Abstract
A facility is described for managing parallel requests in a communications environment having devices or applications (“request handlers”) that support serial and parallel message processing. In various embodiments, the facility receives messages directed to a recipient from an application and sends a first message to the recipient without sending subsequently received messages to the recipient. Upon receiving a response from the recipient to the first message, the facility determines whether the recipient supports parallel or serial message processing. When the recipient supports parallel message processing, the facility sends the subsequently received messages to the recipient without awaiting a response to a message before sending another message. When the recipient supports serial message processing, the facility sends a subsequent message after receiving a response to a previously sent message.
Description

BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram illustrating an example of a suitable computing environment in which the facility may operate.



FIG. 2 is a block diagram illustrating an example of a suitable environment in which the facility may operate in some embodiments.



FIGS. 3-4 are message flow diagrams illustrating message flows in a session initiation protocol communications model.



FIGS. 5-6 are message diagrams indicating portions of messages sent or received by the facility in various embodiments.



FIG. 7 is a state diagram illustrating states associated with components of the facility in various embodiments.



FIG. 8A is a block diagram illustrating components of the facility in various embodiments.



FIG. 8B is a table diagram illustrating a correspondence table employed by the facility in some embodiments.



FIG. 9 is a flow diagram illustrating a send_refer routine invoked by the facility in some embodiments.



FIG. 10 is a flow diagram illustrating a receive_notify routine invoked by the facility in some embodiments.



FIG. 11 is a flow diagram illustrating a handle_serial routine invoked by the facility in some embodiments.



FIG. 12 is a flow diagram illustrating a handle_parallel routine invoked by the facility in some embodiments.



FIG. 13 is a flow diagram illustrating a process_queue routine invoked by the facility in some embodiments.


Claims
  • 1. A method performed by a computer system for managing parallel requests in a communications environment supporting serial and parallel requests, comprising: enqueuing a request message that is to be sent to a recipient computing device, the message containing a conversation identifier;sending the message to the recipient computing device;receiving a response from the recipient computing device;determining from the received response whether it contains the conversation identifier; andwhen the received response contains the conversation identifier, determining that the recipient computing device supports request messages in parallel.
  • 2. The method of claim 1 wherein the message is sent using a session initiation protocol.
  • 3. The method of claim 2 further comprising identifying the conversation identifier in a CSeq header field of the sent message.
  • 4. The method of claim 3 further comprising receiving the conversation identifier in an Event header field of the received response.
  • 5. The method of claim 4 wherein the conversation identifier is provided as a parameter of the Event header field.
  • 6. The method of claim 1 further comprising providing an application program interface for receiving the request message.
  • 7. The method of claim 6 wherein an application employing the application program interface does not have information relating to whether the recipient computing device supports request messages in parallel.
  • 8. The method of claim 1 further comprising sending multiple additional requests to the recipient computing device without waiting for responses to the additional requests when the recipient computing device supports request messages in parallel.
  • 9. The method of claim 1 further comprising sending multiple additional requests to the recipient computing device serially by waiting for a response to each sent additional request before sending a subsequent request when the recipient computing device does not support request messages in parallel.
  • 10. A system for managing parallel requests in a communications environment supporting serial and parallel request handlers, comprising: a message queue component that stores messages that are to be sent to a recipient endpoint, the messages containing a header field indicating an identifier and a header field indicating a recipient for the messages;a correspondence table component that associates the identifier and recipient for each message;a target state list component that stores a state for each message recipient; andan application program interface component that receives a request, creates a message, associates the created message with an identifier, stores the created message in the message queue, sends the message to the recipient, stores in the correspondence table an association between the identifier and recipient indicated for the message, receives from the recipient a response to the message, determines from a header field of the received response that the recipient can receive messages in parallel, and stores in the target state list a state indicating that the recipient can receive messages in parallel.
  • 11. The system of claim 10 wherein the application program interface component identifies the identifier in a CSeq header field of the created message.
  • 12. The system of claim 11 wherein the application program interface component determines that the recipient can receive messages in parallel when the response identifies the identifier in an Event header field.
  • 13. The system of claim 12 wherein the application program interface component employs a session initiation protocol to send the created message.
  • 14. The system of claim 10 wherein the sent message is a REFER message.
  • 15. The system of claim 10 wherein the received response is a NOTIFY message.
  • 16. The system of claim 10 wherein the application program interface provides a method that an application can employ to send multiple requests to the recipient without the application needing information as to whether the recipient can receive multiple messages in parallel.
  • 17. A computer-readable medium whose contents cause a computing system to perform a method comprising: receiving from an application messages directed to a recipient;sending a first message to the recipient without sending subsequently received messages to the recipient;upon receiving a response from the recipient to the first message, determining whether the recipient supports parallel or serial message processing;when the recipient supports parallel message processing, sending the subsequently received messages to the recipient without awaiting a response to a message before sending another message; andwhen the recipient supports serial message processing, sending a subsequent message after receiving a response to a previously sent message.
  • 18. The computer-readable medium of claim 17 wherein the first message is a session initiation protocol REFER message providing an identifier in a CSeq header field.
  • 19. The computer-readable medium of claim 18 wherein the response is a session initiation protocol NOTIFY message providing the identifier in an Event header field.
  • 20. The computer-readable medium of claim 17 wherein the message is received from an application that does not have information relating to whether the recipient supports processing messages in parallel.