Claims
- 1. A method for delivering data objects containing data subject to periodic updates to a plurality of clients via a data communication network, the method comprising the steps of:
connecting to at least one input data stream, each input data stream carrying a respective type of data objects; establishing a communication session with at least one client, each client having an associated profile comprising data indicating data stream subscriptions and at least one object rule associated with the subscribed data streams; receiving on a particular input data stream a current state for a specific data object; updating an object pool cache to reflect the current state of the specific data object; for each respective client subscribed to the particular input data stream, evaluating from the client profile associated with the respective client the object rules associated with the particular input data stream against the specific data object and transmitting the current state of the specific data object to the respective client in response to a positive evaluation.
- 2. The method of claim 1, wherein the data objects carried on the input data streams comprise differential data objects.
- 3. The method of claim 1, further comprising the step of, after connecting to the at least one data stream, initializing the object pool cache with an initial state of data objects carried on the connected at least one data stream.
- 4. The method of claim 3, further comprising the step of, after a communication session is established with a particular client, delivering to the particular client a snapshot of the data objects in the object pool cache associated with the data stream subscriptions in the profile associated with the particular client.
- 5. The method of claim 1, further comprising the step of:
in response to detecting that a particular client in a communication session has subscribed to a new input data stream not in a set of connected input data streams, connecting to the new input data stream.
- 6. The method of claim 5, further comprising the steps of:
initializing the object pool cache with an initial state of data objects carried on the new input data stream; and delivering to the particular client a snapshot of the data objects in the object pool cache associated with the new data stream.
- 7. The method of claim 1, wherein the step of transmitting the current state of the specific data object to the respective client comprises the steps of transmitting a client event related to the current state of the specific data object.
- 8. The method of claim 7, further comprising the step of placing a state event in a client event queue, wherein client events derived from state events extracted from the client event queue are transmitted to the respective client.
- 9. The method of claim 8, wherein the state events are placed in a specific client event queue dedicated to the respective client to which the client event will be transmitted.
- 10. The method of claim 9, further comprising the steps of:
identifying state events to be transmitted to the respective client which are related to a common data object; and aggregating the identified state events to thereby reduce the number of state events in the queue.
- 11. The method of claim 10, where the identified state events are aggregated into at most one state event.
- 12. The method of claim 10, wherein the step of identifying is performed by comparing an object ID in a state event to be placed into the respective client event queue with the object ID of events in the respective client event queue.
- 13. The method of claim 1, further comprising the steps of:
monitoring the performance of communication with each connected client; and dynamically adjusting the rate at which client events are transmitted to the respective clients in response to the monitored performance.
- 14. The method of claim 13, wherein the step of monitoring the performance of communication with each connected client comprises determining network transmission time and a client processing time for received client events.
- 15. The method of claim 1, wherein the data objects comprise information related to financial product offerings.
- 16. The method of claim 1, wherein the input data streams are broadcast by at least one information manager, each information manager maintaining a respective object storage pool;
the method further comprising the steps of: retrieving an initial state of data objects carried on the connected at least one data stream from the object storage pool associated with the information manager broadcasting the data stream; and initializing the object pool cache with the retrieved initial states.
- 17. A system for delivering data objects containing data subject to periodic updates to a plurality of clients via a data communication network, the system comprising:
a client session manager; at least one object state manager having an associated object pool cache; and at least one client session; the client session manager being configured to:
receive initial access communications from a client; load a client profile associated with the client and comprising data indicating data stream subscriptions and at least one object rule associated with the subscribed data streams; each object state manager being configured to:
connect to at least one input data stream, each input data stream carrying information related to a respective type of data objects; receive on the input data streams changes to states of data objects; upon receipt of a state change for a specific data object on a particular data stream, update the associated object pool cache to reflect the changed current state of the specific data object and generate an object event directed to client sessions for clients subscribed to the particular data stream indicating a state change has occurred with regard to the specific data object; each client session being configured to:
in response to the receipt of an object event, evaluate the object rules associated with the particular input data stream from the respective client profile against the specific data object change noticed by the object event, and transmitting the current state of the specific data object to the respective client in response to a positive evaluation.
- 18. The system of claim 17, further comprising
a delivery manager associated with each respective client session; the client sessions being configured to transmit the current state by forwarding a state event to the associated delivery manager; the delivery manager comprising:
a client queue manager configured to place received client events on a client event queue; and a push module configured to retrieve state events from the client event queue and send a client event derived from the state event to the respective client.
- 19. The system of claim 18, wherein:
at least one of the client session and the push module are configured to monitor the performance characteristics for communications with the respective client and dynamically determine a rate at which client events should be transmitted in response to the monitored characteristics; the push module being configured to send client events to the respective client at the dynamically determined rate.
- 20. The system of claim 19 wherein the performance characteristics comprise network transmission time and a client processing speed time for received client events.
- 21. The system of claim 18, wherein the queue manager is further configured to:
identify events to be transmitted to the respective client which are related to a common data object; and initiate an aggregation of the identified events to thereby reduce the number of client events in the queue.
- 22. The system of claim 21, wherein the identified events are aggregated into at most one event.
- 23. The system of claim 21, wherein:
each state event received by the queue manager has associated aggregation functionality; and the queue manager is configured to initiate aggregation by executing the aggregation functionality associated with a received state event when the client event queue contains a queued event related to data object common to the received state event.
- 24. The system of claim 17, wherein each client profile comprises at least one client folder, each client folder comprising data indicating at least one subscribed data stream and containing object rules associated with the subscribed data stream;
the client session being configured to evaluate the object rules associated with the particular input data stream for each folder in the client profile indicating a subscription to that stream.
- 25. The system of claim 17, further comprising a state dispatch module configured to:
receive requests for the current state of a set of data objects from a requestor; obtain current state information for the data objects in the set; and return the current state information to the requestor.
- 26. The system of claim 25, wherein:
the object state manager is configured to request from the state dispatch module a current state of a set of data objects carried on a connected input data stream upon first connecting to that input data stream; the returned current state information being used to initialize the respective object cache for the object state manager.
- 27. The system of claim 26, wherein the object state manager further comprises an update queue, the object state manager being further configured to place current states received from the input data stream on the update queue during a pendency of the request and apply the queued current states to data in the object cache after cache initialization is complete.
- 28. The system of claim 26, wherein the state dispatch module is connected to at least one offer pool maintained by a transmitter of the data streams received object state managers and configured to obtain current state information from an appropriate offer pool.
- 29. The system of claim 17, wherein the data objects carried on the input data streams comprise differential data objects.
- 30. The system of claim 17, wherein the data objects comprise information related to financial product offerings.
- 31. The system of claim 17, wherein the client session manager is further configured to, after a communication session is established with a particular client, deliver to the particular client a snapshot of the data objects in the object pool cache associated with the data stream subscriptions in the profile associated with the particular client.
- 32. The system of claim 17, wherein the client session manager is further configured to in response to detecting that a particular client in a communication session has subscribed to a new input data stream not presently connected to one of the at least one object state managers, activate a new object state manager to support the new input data stream.
- 33. The system of claim 17, further comprising an HTTP Tunneling transport module connected between the delivery manager and the respective client.
- 34. The system of claim 17 further comprising at least one information manager receiving raw object data streams from at least one content provider and generating the input data streams.
- 35. The system of claim 34, wherein each information manager further comprises a structured object pool containing a current state of the data objects carried on the input data streams, the object events on the input data streams representing differential changes to the state of particular data objects.
- 36. The system of claim 34, wherein the data objects carried on a particular input data stream are of a common type.
- 37. A system for processing information related to financial product offerings and delivering real-time offer updates to a plurality of clients via a data communication network, the information being included in data objects carried on at least one input data stream and representing changes in state of particular product offerings, the data streams being transmitted by at least one information manager having a respective offer pool containing current states of the product offerings, the system comprising:
at least one object state manager, each object state manager connected to a respective data input stream, comprising an associated object cache and subscriber data indicating subscribers to the respective data input stream, and configured to:
receive a data object on the connected input data stream related to a specific product offering, update the state of the specific product offering in associated object pool cache in accordance with the state changed indicated in the received data object, generate an object event directed to subscribers of the respective data input stream indicating the state change for the specific product offering in accordance with the subscriber data; a plurality of client session modules, each client session module being in communication with a respective client and configured to: receive object events generated by object state managers connected to an input data stream to which the respective client has subscribed, upon receiving an object event, evaluate client object rules against the object event, the object rules selected in accordance with the particular data stream associated with the object event, and generate a state event from the object event indicating the changed state of the specific data object to the respective client in response to a positive evaluation; a plurality of delivery managers, each delivery manager being associated with a respective client session module and configured to:
receive state events generated by the associated client session module, and send client events derived from the received state events to the respective client; and a client session manager having access to a plurality of client profiles, each client profile containing data stream subscription information and related client object rules, the client manager configured to:
receive an initial communication from a new client; associate the new client with a new client session module; retrieve the client profile associated with the new client; identify a set of data stream subscriptions indicated in the client profile; and add the new client session module to the subscription data for each object state manager connected to an input data stream to which the new client is subscribed.
- 38. The system of claim 37, wherein each delivery manager comprises:
a client event queue for containing events to be transmitted to the respective client; a queue manager configured to place events on the queue in accordance with received state events; and a push module configured to retrieve events from the client event queue and send appropriate client events to the respective client.
- 39. The system of claim 38, wherein at least one of the client session and the push module are configured to monitor the performance characteristics for communications with the respective client and dynamically determine a rate at which client events should be transmitted in response to the monitored characteristics;
the push module being configured to send client events to the respective client at the dynamically determined rate.
- 40. The system of claim 40 wherein the performance characteristics comprise network transmission time and a client processing speed time for received client events.
- 41. The system of claim 38, wherein the queue manager is further configured to:
identify a queued event related to a data object common to a received state event; and initiate an aggregation of the state event and identified queued event.
- 42. The system of claim 42, wherein:
each state event received by the queue manager has associated aggregation functionality; and the queue manager is configured to initiate aggregation by executing the aggregation functionality associated with the received state event.
- 43. The system of claim 37, further comprising:
a state dispatch module in communication with the information manager and the object caches associated with the object state managers and configured to receive a state data request as input from a requester, retrieve the current states of particular product offerings in accordance with the request, and return the current states to the requestor.
- 44. The system of claim 44, wherein the object state manager is further configured to, upon first connecting to the respective input data stream, send a request to the state dispatch module to obtain the current states of product offerings carried on the respective data stream, the obtained currents states being used to initialize the associated object cache.
- 45. The system of claim 44, wherein the client manager is further configured to send a request to the state dispatch module to obtain the current states of product offerings carried on input data streams to which the new client is subscribed and initiate the return of at least a portion of the obtained current states to the new client.
- 46. The system of claim 37, wherein the client manager is further configured to:
identify an unconnected data stream specified in the client profile associated with the new client; and initiate a connection to the unconnected data stream from a new object state manager.
CROSS-REFERENCE(S) TO RELATED APPLICATIONS
[0001] This application claims priority under 35 U.S.C. § 119 from U.S. Provisional Application Ser. No. 60/223,397 filed on Aug. 4, 2000 and entitled “Real Time Host Infrastructure” and U.S. Provisional Application Ser. No. 60/227,162 filed on Aug. 22, 2000 and entitled “Enhanced Information Delivery.” The entire contents of both these applications is hereby incorporated by reference.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60223397 |
Aug 2000 |
US |
|
60227162 |
Aug 2000 |
US |