Claims
- 1. An apparatus comprising:
at least one processor; a memory coupled to the at least one processor; a software application residing in the memory and executed by the at least one processor; and an asynchronous completion port residing in the memory and executed by the at least one processor, the asynchronous completion port defining at least one logical connection that may include a first plurality of network connections, the asynchronous completion port receiving a plurality of sequenced messages from the first plurality of network connections, ordering the plurality of sequenced messages, and delivering the ordered messages to the software application.
- 2. The apparatus of claim 1 wherein the plurality of sequenced messages each include a sequence number and a logical connection identifier, and wherein the asynchronous completion port orders the plurality of sequenced messages using the sequence number and logical connection identifier for each sequenced message.
- 3. The apparatus of claim 1 wherein the asynchronous completion port defines a plurality of logical connections, wherein at least one of the plurality of logical connections include the first plurality of network connections.
- 4. The apparatus of claim 1 wherein the asynchronous completion port comprises:
a sorted staging queue corresponding to a logical connection that orders the plurality of sequenced messages for the corresponding logical connection; and an asynchronous I/O sequenced completion port that receives the ordered messages from the sorted staging queue.
- 5. The apparatus of claim 1 wherein the asynchronous completion port defines a plurality of logical connections, the asynchronous completion port comprising:
a sorted staging queue corresponding to each logical connection, each sorted staging queue ordering the plurality of sequenced messages for the corresponding logical connection; and an asynchronous I/O sequenced completion port that receives the ordered messages from each sorted staging queue.
- 6. The apparatus of claim 1 wherein each network connection comprises a socket.
- 7. The apparatus of claim 1 wherein the asynchronous completion port receives a priority message and expedites delivery of the priority message to the software application.
- 8. An apparatus comprising:
at least one processor; a memory coupled to the at least one processor; a software application residing in the memory and executed by the at least one processor; at least one network connection residing in the memory and executed by the at least one processor, the at least one network connection receiving a plurality of messages that each include a sequence number and a logical connection identifier; and an asynchronous completion port residing in the memory and executed by the at least one processor, the asynchronous completion port defining at least one logical connection, the asynchronous completion port receiving the plurality of messages, ordering the plurality of messages according to their respective sequence number and logical connection identifier, and delivering the ordered messages to the software application.
- 9. The apparatus of claim 8 wherein the asynchronous completion port defines a plurality of logical connections, wherein at least one of the plurality of logical connections include a plurality of network connections.
- 10. The apparatus of claim 8 wherein the asynchronous completion port comprises:
a sorted staging queue corresponding to a logical connection that orders the plurality of messages for the corresponding logical connection; and an asynchronous I/O sequenced completion port that receives the ordered messages from the sorted staging queue.
- 11. The apparatus of claim 8 wherein the asynchronous completion port defines a plurality of logical connections, the asynchronous completion port comprising:
a sorted staging queue corresponding to each logical connection that orders the plurality of sequenced messages for the corresponding logical connection; and an asynchronous I/O sequenced completion port that receives the ordered messages from each sorted staging queue.
- 12. The apparatus of claim 8 wherein each network connection comprises a socket.
- 13. The apparatus of claim 8 wherein the asynchronous completion port receives a priority message and expedites delivery of the priority message to the software application.
- 14. An apparatus comprising:
at least one processor; a memory coupled to the at least one processor; a software application residing in the memory and executed by the at least one processor; a plurality of sockets residing in the memory and executed by the at least one processor, each socket receiving a plurality of messages that each include a sequence number and a logical connection identifier; and an asynchronous completion port residing in the memory and executed by the at least one processor, the asynchronous completion port defining a plurality of logical connections, wherein at least one of the plurality of logical connections include a plurality of the sockets, the asynchronous completion port comprising:
a sorted staging queue corresponding to each logical connection that reads the plurality of messages and that orders the plurality of messages for a corresponding logical connection according to their respective sequence number and logical connection identifier; and an asynchronous I/O sequenced completion port that receives the ordered messages from each sorted staging queue, and that delivers the ordered messages to the software application.
- 15. A method for communicating between a first computer system and a second computer system coupled together via a network, the method comprising the steps of:
defining at least one logical connection that may include a first plurality of network connections; receiving a plurality of sequenced messages from the first plurality of network connections; and ordering the plurality of sequenced messages.
- 16. The method of claim 15 further comprising the step of delivering the ordered messages to a software application running on the second computer system.
- 17. The method of claim 15 further comprising the step of defining a plurality of logical connections, wherein at least one of the plurality of logical connections include a plurality of network connections.
- 18. The method of claim 15 further comprising the steps of:
ordering the plurality of sequenced messages for each logical connection; and delivering the ordered messages to a software application.
- 19. The method of claim 15 further comprising the steps of:
receiving a priority message; and expediting delivery of the priority message to a software application.
- 20. The method of claim 15 wherein the plurality of sequenced messages each include a sequence number and a logical connection identifier, and wherein the step of ordering the plurality of sequenced messages comprises the step of ordering the plurality of sequenced messages using the sequence number and logical connection identifier for each sequenced message.
- 21. The method of claim 15 wherein each network connection comprises a socket.
- 22. A method for communicating between a first computer system and a second computer system coupled together via a network, the method comprising the steps of:
(A) the first computer system sending a plurality of messages that each include a sequence number and a logical connection identifier to the second computer system via the network; and (B) the second computer system receiving the plurality of messages and ordering the plurality of messages according to their respective sequence number and logical connection identifier.
- 23. The method of claim 22 further comprising the step of delivering the ordered messages to a software application running on the second computer system.
- 24. The method of claim 22 further comprising the step of defining a plurality of logical connections, wherein at least one of the plurality of logical connections include a plurality of network connections.
- 25. The method of claim 22 further comprising the steps of:
ordering the plurality of sequenced messages for each logical connection; and delivering the ordered messages to a software application running on the second computer system.
- 26. The method of claim 22 further comprising the steps of:
the second computer system receiving a priority message from the first computer system; and the second computer system expediting delivery of the priority message to a software application running on the second computer system.
- 27. The method of claim 22 wherein each network connection comprises a socket.
- 28. A method for communicating between a first computer system and a second computer system coupled together via a network, the method comprising the steps of:
(A) defining on the second computer system a plurality of logical connections, wherein a selected logical connection includes a plurality of sockets; (B) the second computer system receiving from the first computer system via the plurality of sockets a plurality of messages that each include a sequence number and a logical connection identifier; (C) the second computer system ordering the plurality of received messages for each logical connection according to the sequence number and logical connection identifier for each of the plurality of received messages; and (D) delivering the ordered messages to a software application running on the second computer system.
- 29. A program product comprising:
(A) an asynchronous completion port that defines at least one logical connection that may include a first plurality of network connections, the asynchronous completion port receiving a plurality of sequenced messages from the first plurality of network connections, ordering the plurality of sequenced messages, and delivering the ordered messages to a software application; and (B) computer-readable signal bearing media bearing the asynchronous completion port.
- 30. The program product of claim 29 wherein the computer-readable signal bearing media comprises recordable media.
- 31. The program product of claim 29 wherein the computer-readable signal bearing media comprises transmission media.
- 32. The program product of claim 29 wherein the plurality of sequenced messages each include a sequence number and a logical connection identifier, and wherein the asynchronous completion port orders the plurality of sequenced messages using the sequence number and logical connection identifier for each sequenced message.
- 33. The program product of claim 29 wherein the asynchronous completion port defines a plurality of logical connections, wherein at least one of the plurality of logical connections include the first plurality of network connections.
- 34. The program product of claim 29 wherein the asynchronous completion port comprises:
a sorted staging queue corresponding to a logical connection that orders the plurality of sequenced messages for the corresponding logical connection; and an asynchronous I/O sequenced completion port that receives the ordered messages from the sorted staging queue.
- 35. The program product of claim 29 wherein the asynchronous completion port defines a plurality of logical connections, the asynchronous completion port comprising:
a sorted staging queue corresponding to each logical connection, each sorted staging queue ordering the plurality of sequenced messages for the corresponding logical connection; and an asynchronous I/O sequenced completion port that receives the ordered messages from each sorted staging queue.
- 36. The program product of claim 29 wherein each network connection comprises a socket.
- 37. A program product comprising:
(A) an asynchronous completion port that defines at least one logical connection, the asynchronous completion port receiving a plurality of messages that each include a sequence number and a logical connection identifier, ordering the plurality of messages according to their respective sequence number and logical connection identifier, and delivering the ordered messages to a software application; and (B) computer-readable signal bearing media bearing the asynchronous completion port.
- 38. The program product of claim 37 wherein the computer-readable signal bearing media comprises recordable media.
- 39. The program product of claim 37 wherein the computer-readable signal bearing media comprises transmission media.
- 40. The program product of claim 37 wherein the asynchronous completion port defines a plurality of logical connections, wherein at least one of the plurality of logical connections include a plurality of network connections.
- 41. The program product of claim 37 wherein the asynchronous completion port comprises:
a sorted staging queue corresponding to a logical connection that orders the plurality of messages for the corresponding logical connection; and an asynchronous I/O sequenced completion port that receives the ordered messages from the sorted staging queue.
- 42. The program product of claim 37 wherein the asynchronous completion port defines a plurality of logical connections, the asynchronous completion port comprising:
a sorted staging queue corresponding to each logical connection that orders the plurality of sequenced messages for the corresponding logical connection; and an asynchronous I/O sequenced completion port that receives the ordered messages from each sorted staging queue.
- 43. The program product of claim 37 wherein each network connection comprises a socket.
RELATED APPLICATION
[0001] This patent application is related to “Efficient Method for Determining Record Based I/O on Top of Streaming Protocols”, Ser. No. 09/990,850 filed on Nov, 21, 2001, which is incorporated herein by reference.