Non-blocking buffered inter-machine data transfer with acknowledgement
First Claim
1. In a computing environment, a system comprising:
- a sender subsystem of a first machine, the sender subsystem maintaining a data structure of transmission items to send, and a send mechanism that sends data;
a receiver subsystem of a second machine configured to receive data from the sender subsystem of the first machine, the receiver subsystem maintaining a receive data structure of information corresponding to data sent by the sender subsystem;
the sender subsystem configured to detect a send trigger event and to process the transmission items into per-destination data items, the send mechanism sending the per-destination data items and corresponding data to destination machines, including a selected data item and its corresponding data to the receiver subsystem of the second machine;
wherein the receiver subsystem of the second machine receives the selected per-destination data item and its corresponding data, returns an acknowledgement corresponding to the received per-destination data item to the first machine, and includes a receive mechanism that places information corresponding to the received data in a receive data structure; and
a data transfer mechanism that accesses the receive data structure on a receive handling trigger event to pass data corresponding to the per-destination data items to a data handler and sends an acknowledgement for each per-destination data item received in a transmission.
2 Assignments
0 Petitions
Accused Products
Abstract
A system, method and data structures for transmitting batched data over a network in asynchronous, non-blocking operations, with acknowledgements returned to the senders. Each machine includes a sender subsystem and a receiver subsystem. Transmission items corresponding to data to be sent are buffered until a send is triggered, at which time the transmission items are sorted according to their destinations and sent as a GUID-identified batch to each destination by a send thread. At each receiver, a receiving thread adds descriptions of the data to a receive list, which a transfer thread processes when triggered. The transfer thread sends the corresponding data to a recipient program, and sends GUID-identified acknowledgements corresponding to each GUID back to the originating senders. An acknowledge thread at each originating sender buffers the acknowledgements, and when triggered, a cleanup thread uses the GUID to identify which batched transmissions were received.
-
Citations
53 Claims
-
1. In a computing environment, a system comprising:
-
a sender subsystem of a first machine, the sender subsystem maintaining a data structure of transmission items to send, and a send mechanism that sends data; a receiver subsystem of a second machine configured to receive data from the sender subsystem of the first machine, the receiver subsystem maintaining a receive data structure of information corresponding to data sent by the sender subsystem; the sender subsystem configured to detect a send trigger event and to process the transmission items into per-destination data items, the send mechanism sending the per-destination data items and corresponding data to destination machines, including a selected data item and its corresponding data to the receiver subsystem of the second machine; wherein the receiver subsystem of the second machine receives the selected per-destination data item and its corresponding data, returns an acknowledgement corresponding to the received per-destination data item to the first machine, and includes a receive mechanism that places information corresponding to the received data in a receive data structure; and a data transfer mechanism that accesses the receive data structure on a receive handling trigger event to pass data corresponding to the per-destination data items to a data handler and sends an acknowledgement for each per-destination data item received in a transmission. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. In a computing environment, a method comprising:
-
accumulating transmission items to send, each transmission item specifying at least one destination machine and at least one set of data to send to each destination machine; detecting a send trigger event, and in response, processing the transmission items into per-destination data items, each per-destination data item identifying each set of data to send to a destination machine; associating a unique identifier with each per-destination data item; sending a transmission for each per-destination data item to the destination machine identified in that per-destination data item, the transmission comprising the unique identifier associated with that per-destination data item and each set of data corresponding to that per-destination data item; receiving an acknowledgement from each destination machine that received the transmission send thereto, the acknowledgment comprising the unique identifier; at a specified destination machine, receiving a data transmission from the sender, and placing information corresponding to the transmission into a receive data structure; and accessing the receive data structure on a receive handling trigger event, and passing data corresponding to the per-destination data item to a data handler. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)
-
-
48. A computer-readable storage medium having computer-executable instructions which when executed perform steps, comprising:
-
accumulating transmission items to send, each transmission item specifying at least one destination machine and at least one set of data to send to each destination machine; detecting a send trigger event, including testing for the send trigger event, comprising determining at least one of;
whether a time limit is reached, whether a threshold amount of data is achieved and whether a transmission item indicates that at least part of its corresponding data comprises high-priority data, and in response, processing the transmission items into per-destination data items, each per-destination data item identifying each set of data to send to a destination machine;associating a unique identifier with each per-destination data item; sending a transmission for each per-destination data item to the destination machine identified in that per-destination data item, the transmission comprising the unique identifier associated with that per-destination data item and each set of data corresponding to that per-destination data item; receiving an acknowledgement from each destination machine that received the transmission send thereto, the acknowledgement comprising the unique identifier.
-
-
49. In a computing environment, a method comprising:
-
accumulating transmission items to send, each transmission item specifying at least one destination machine and at least one set of data to send to each destination machine; at a first thread of a source machine; in response to a send trigger event, processing the transmission items into per-destination data items, each per-destination data item identifying each set of data to send to a destination machine; associating a unique identifier with each per-destination data item; and sending a transmission for each per-destination data item to the destination machine identified in that per-destination data item, the transmission comprising the unique identifier associated with that per-destination data item and each set of data corresponding to that per-destination data item; at a second thread of a specified destination machine; receiving a transmission from the source machine, and placing information corresponding to the transmission into a receive data structure; at a third thread of the specified destination machine; in response to a receive handling trigger event, accessing the receive data structure to a) return data corresponding to the transmission to a recipient program, and b) return an acknowledgement including the unique identifier to the source machine; at a fourth thread of the source machine; receiving the acknowledgement from the specified machine, and placing information corresponding to the acknowledgement into an acknowledgment data structure; and at a fifth thread of the source machine, accessing the acknowledgment data structure to determine that the specified destination received the transmission sent thereto.
-
-
50. A computer-readable storage medium having computer-executable instructions which when executed perform steps, comprising:
-
accumulating transmission items to send, each transmission item specifying at least one destination machine and at least one set of data to send to each destination machine; at a first thread of a source machine; in response to a send trigger event, processing the transmission items into per-destination data items, each per-destination data item identifying each set of data to send to a destination machine; associating a unigue identifier with each per-destination data item; and sending a transmission for each per-destination data item to the destination machine identified in that per-destination data item, the transmission comprising the unique identifier associated with that per-destination data item and each set of data corresponding to that per-destination data item; at a second thread of a specified destination machine; receiving a transmission from the source machine, and placing information corresponding to the transmission into a receive data structure; at a third thread of the specified destination machine; in resoonse to a receive handling trigger event, accessing the receive data structure to a) return data corresponding to the transmission to a recipient program, and b) return an acknowledgement including the unique identifier to the source machine; at a fourth thread of the source machine; receiving the acknowledgement from the specified machine, and placing information corresponding to the acknowledgement into an acknowledgement data structure; and at a fifth thread of the source machine, accessing the acknowledgement data structure to determine that the specified destination received the transmission sent thereto.
-
-
51. In a computing environment, a system comprising:
-
a sender subsystem of a first machine, the sender subsystem maintaining a data structure of transmission items to send, and a send mechanism that sends data; a receiver subsystem of a second machine configured to receive data from the sender subsystem of the first machine, the receiver subsystem maintaining a receive data structure of information corresponding to data sent by the sender subsystem; the sender subsystem configured to detect a send trigger event and to process the transmission items into per-destination data items, the send mechanism sending the per-destination data items and corresponding data to destination machines, including a selected data item and its corresponding data to the receiver subsystem of the second machine; wherein each per-destination data item has a unique identifier associated therewith, and the receiver subsystem returns an acknowledgement including the unique identifier that corresponds to the received per-destination data item to the sender subsystem; an acknowledgement handler that places each unique identifier corresponding to a returned acknowledgement into an acknowledgement data structure; and a cleanup mechanism, wherein the cleanup mechanism accesses the acknowledgement data structure to determine which per-destination data items have been successfully received by a destination.
-
-
52. In a computing environment, a method comprising:
-
accumulating transmission items to send, each transmission item specifying at least one destination machine and at least one set of data to send to each destination machine; detecting a send trigger event, and in response, processing the transmission items into per-destination data items, each per-destination data item identifying each set of data to send to a destination machine; associating a unique identifier with each per-destination data item; sending a transmission for each per-destination data item to the destination machine identified in that per-destination data item, the transmission comprising the unique identifier associated with that per-destination data item and each set of data corresponding to that per-destination data item; receiving an acknowledgement from each destination machine that received the transmission send thereto, the acknowledgment comprising the unique identifier; placing data corresponding to returned acknowledgements into an acknowledgement data structure; accessing the acknowledgement data structure to determine which per-destination data items have been successfully received by a destination; and locating a unique identifier corresponding to a selected acknowledgement in the acknowledgement data structure, and freeing data based on the unique identifier.
-
-
53. In a computing environment, a method comprising:
-
accumulating transmission items to send, each transmission item specifying at least one destination machine and at least one set of data to send to each destination machine; detecting a send trigger event, and in response, processing the transmission items into per-destination data items, each per-destination data item identifying each set of data to send to a destination machine; associating a unique identifier with each per-destination data item; sending a transmission for each per-destination data item to the destination machine identified in that per-destination data item, the transmission comprising the unique identifier associated with that per-destination data item and each set of data corresponding to that per-destination data item; receiving an acknowledgement from each destination machine that received the transmission send thereto, the acknowledgment comprising the unique identifier; placing data corresponding to returned acknowledgements into an acknowledgement data structure; accessing the acknowledgement data structure to determine which per-destination data items have been successfully received by a destination; tracking the acknowledgements in the acknowledgement data structure; closing the acknowledgement data structure on a cleanup trigger event; and providing a new acknowledgement data structure for tracking subsequently returned acknowledgements.
-
Specification