IP Library › Granted Patent US 12,541,409
Granted Patent B2
US 12,541,409 · App. 18/251,230 · Granted Feb 3, 2026

Subscription-based data delivery system

Inventors: Rashid Mohamed Mansoor (London, GB); James Kay (London, GB); Christopher Sinclair (London, GB); Douglas Wilson (London, GB)
Assignee: Hadean Supercomputing Ltd
G06F9/542G06F16/9535
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,541,409
App. No.
18/251,230
Granted
Feb 3, 2026
Kind
B2
Abstract

There is provided a computer-implemented method comprising, at an intermediary process acting as an intermediary between a publisher system and a plurality of subscriber processes, the intermediary process having a publisher data store storing one or more subscriptions for which the intermediary process is a publisher and a subscriber data store storing one or more subscriptions for which the intermediary process is a subscriber.

Claims (46)

1 . A computer-implemented method comprising, at an intermediary process acting as an intermediary between a publisher system and a plurality of subscriber processes, the intermediary process having a publisher data store storing one or more subscriptions for which the intermediary process is a publisher and a subscriber data store storing one or more subscriptions for which the intermediary process is a subscriber:

receiving, from a first one of the plurality of subscriber processes, a first subscription request comprising a first subscription for the first subscriber process;

storing, in the publisher data store, a record associating the first subscriber process with the first subscription;

determining whether the one or more subscriptions in the subscriber data store collectively cover the first subscription; and

responsive to determining that the one or more subscriptions in the subscriber data store do not collectively cover at least a portion of the first subscription, sending, to the publisher system, a second subscription request comprising a second subscription for the intermediary process, the second subscription comprising at least the at least a portion of the first subscription, and storing, in the subscriber data store, a record of the second subscription.

2 . The method of claim 1 , wherein the second subscription comprises at least one of:

the subscriptions stored in the subscriber data store; or

an additional subscription for content neighbouring the first subscription.

3 . The method of claim 1 , wherein the first subscription comprises a query for selecting data from a database, wherein the method further comprises decomposing the query into a plurality of primitive queries, wherein determining whether the one or more subscriptions in the subscriber data store collectively cover the first subscription comprises determining whether the one or more subscriptions in the subscriber data store collectively cover each of the plurality of primitive queries, wherein the sending of the second subscription request is responsive to determining that the one or more subscriptions in the subscriber data store do not collectively cover at least one of the plurality of primitive queries, and wherein the second subscription comprises at least the at least one of the plurality of primitive queries.

4 . The method of claim 1 , wherein the intermediary process has a state data store storing state data, and the method further comprises: receiving first event data from the publisher system; and updating the state data in the state data store based on the first event data.

5 . The method of claim 4 , further comprising:

generating, from the state data in the state data store, second event data according to a first subscription associated with the first subscriber process in the publisher data store; and sending the second event data to the first subscriber process.

6 . The method of claim 5 , further comprising: receiving, from a second one of the plurality of subscriber processes, a third subscription request comprising a third subscription for the second subscriber process; storing, in the publisher data store, a record associating the second subscriber process with the third subscription; determining that the one or more subscriptions in the subscriber data store collectively cover the third subscription; subsequent to updating the state data, generating, from the state data in the state data store, fourth event data according to the subscription associated with the second subscriber process in the publisher data store; and sending the fourth event data to the second subscriber process.

7 . The method of claim 1 , wherein the subscriptions are for content having one or more particular spatial characteristics.

8 . The method of claim 1 , wherein each subscription comprises a query for selecting data from a database.

9 . The method of claim 1 , wherein the subscriptions are for content or data in a particular region of a space, and wherein determining whether the one or more subscriptions in the subscriber data store collectively cover the first subscription comprises determining whether the particular region corresponding to the first subscription is a subset of the particular regions corresponding to the one or more subscriptions in the subscriber data store.

10 . A computer-implemented method comprising, at an intermediary process acting as an intermediary between a publisher system and a plurality of subscriber processes, the intermediary process having a publisher data store storing one or more subscriptions for which the intermediary process is a publisher, a subscriber data store storing one or more subscriptions for which the intermediary process is a subscriber, and a state data store storing state data:

receiving first event data from the publisher system;

updating the state data in the state data store based on the first event data;

generating, from the state data in the state data store, second event data according to a first subscription associated with a first one of the subscriber processes in the publisher data store; and

sending the second event data to the first subscriber process.

11 . The method of claim 10 , further comprising:

subsequent to updating the state data, receiving third event data from the publisher system; and

updating the state data in the state data store based on the third event data,

wherein the generating is subsequent to updating the state data based on the first event data and updating the state data based on the third event data and the generating is from the state data in the state data store which takes into account the first event data and the third event data.

12 . The method of claim 10 , wherein the intermediary process is a first intermediary process, further comprising, at a second intermediary process acting as an intermediary between the publisher system and a second plurality of subscriber processes, the second intermediary process having a second publisher data store storing one or more subscriptions for which the second intermediary process is a publisher, a second subscriber data store storing one or more subscriptions for which the second intermediary process is a subscriber, and a second state data store storing state data:

receiving third event data from the publisher system;

updating the state data in the second state data store based on the third event data;

generating, with the first intermediary process and from the state data in the second state data store and the state data in the first state data store, fourth event data according to a subscription associated with a given one of the second subscriber processes in the second publisher data store; and

sending the fourth event data to the given one of the second subscriber processes.

13 . The method of claim 10 , wherein the second event data is generated responsive to:

determining that a connection between the first subscriber process and the intermediary process is ready to be written to, having completed previous data sends.

14 . The method of claim 10 , wherein the intermediary process forms part of an intermediary system and wherein the intermediary system is a distributed system.

15 . The method of claim 10 , wherein the second event data is generated responsive to determining that a timer has expired.

16 . The method of claim 10 , wherein the subscriptions are for content having one or more particular spatial characteristics.

17 . The method of claim 10 , wherein each subscription comprises a query for selecting data from a database.

18 . The method of claim 10 , wherein the state data store comprises an active state data store and an inert state data store, the second event data is generated from the state data in the active state data store, and updating the state data comprises:

updating the state data in the inert state data store based on the first event data;

atomically swapping the inert state data store and the active state data store; and

updating the state data in the inert state data store to match the state data in the active state data store.

19 . The method of claim 10 , further comprising receiving, from the first subscriber process, a first subscription request comprising the first subscription for the first subscriber process and storing, in the publisher data store, a record associating the first subscriber process with the first subscription, wherein the first subscription request comprises an indication of computing capabilities of the first subscriber process, and wherein generating the second event data comprises adapting the second event data to the computing capabilities of the first subscriber process.

20 . A non-transitory computer-readable medium comprising instructions which, when executed by one or more computers, cause the one or more computers to perform a method comprising, at an intermediary process acting as an intermediary between a publisher system and a plurality of subscriber processes, the intermediary process having a publisher data store storing one or more subscriptions for which the intermediary process is a publisher, a subscriber data store storing one or more subscriptions for which the intermediary process is a subscriber, and a state data store storing state data:

receiving first event data from the publisher system;

updating the state data in the state data store based on the first event data;

generating, from the state data in the state data store, second event data according to a first subscription associated with a first one of the subscriber processes in the publisher data store; and

sending the second event data to the first subscriber process.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2024
From: WILSON, DOUGLAS
To: HADEAN SUPERCOMPUTING LIMITED
Reel/Frame 069465/0838 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2024
From: MANSOOR, RASHID MOHAMED; KAY, JAMES; SINCLAIR, CHRISTOPHER
To: HADEAN SUPERCOMPUTING LTD
Reel/Frame 069285/0386 →
Priority Claims (1)
EP 20204927 · Oct 30, 2020 · regional
Continuity (1)
Related Publication 20230409414A1 · Dec 21, 2023
References Cited (20)
US 7177859B2 · Pather et al. · 2007 [cited by applicant]
US 10104049B2 · Hamilton · 2018 [cited by examiner]
US 11178243B2 · Jensen · 2021 [cited by examiner]
US 11822924B2 · Otenko · 2023 [cited by examiner]
US 20060047666A1 · Bedi et al. · 2006 [cited by applicant]
US 20060069587A1 · Banks et al. · 2006 [cited by applicant]
WO 2020112793A2 · 2020 [cited by applicant]
EP Office Action Mailed on Mar. 17, 2022 for EP Application No. 20204927, 6 page(s). [cited by applicant]
European search report Mailed on Apr. 16, 2021 for EP Application No. 20204927, 8 page(s). [cited by applicant]
European search report Mailed on Jan. 22, 2024 for EP Application No. 23200803, 8 page(s). [cited by applicant]
Outgoing—ISA/210—International Search Report Mailed on Feb. 3, 2022 for WO Application No. PCT/EP21/079902, 10 page(s). [cited by applicant]
Summons to attend oral proceedings to Rule 115(1) Epc, Ep 20204927.6, dated Sep. 19, 2022. [cited by applicant]
Wikipedia, “Content delivery network”, available online at: <https://en.wikipedia.org/w/index.php?title=Content_delivery_network&oldid=985979272>, Oct. 29, 2020, 8 pages. [cited by applicant]
Wikipedia, “Minimum bounding box”, available online at: <https://en.wikipedia.org/w/index.php?title=Minimum_bounding_box&oldid=981946359>, Oct. 5, 2020, 2 pages. [cited by applicant]
Wikipedia, “Multiple buffering”, available online at: <https://en.wikipedia.org/w/index.php?title=Multiple_buffering&oldid=940627830>, Feb. 13, 2020, 3 pages. [cited by applicant]
Wikipedia, “Proxy server”, available online at: <https://en.wikipedia.org/w/index.php?title=Proxy_server&oldid=985866889>, Oct. 28, 2020, 8 pages. [cited by applicant]
Wikipedia, “Push technology”, available online at: <https://en.wikipedia.org/w/index.php?title=Push_technology&oldid=985534293>, Oct. 26, 2020, 4 pages. [cited by applicant]
Wikipedia, “Spatial database”, available online at: <https://en.wikipedia.org/w/index.php?title=Spatial_database&oldid=977730239>, Sep. 10, 2020, 4 pages. [cited by applicant]
Wikipedia, “Web cache”, available online at: <https://en.wikipedia.org/w/index.php?title=Web_cache&oldid=984732223>, Oct. 21, 2020, 2 pages. [cited by applicant]
International Search Report and Written Opinion for PCT/EP2021/079902, Feb. 3, 2022. [cited by applicant]