IP Library Granted Patent US 9,165,046
Granted Patent B2
US 9,165,046 · App. 13/742,169 · Granted Oct 20, 2015

Core data synchronization systems and methods

Inventor: Stephen M. Blanding (Redmond, WA)
Assignee: RealNetworks, Inc.
G06F17/30575
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 9,165,046
App. No.
13/742,169
Granted
Oct 20, 2015
Kind
B2
Abstract

To synchronize data between a remote database and a local object-graph-and-persistence-framework, a synchronization framework receives messages from the local object-graph-and-persistence-framework indicating that a locally-managed object has been retrieved from a local datastore and instantiated or that the locally-managed object has been created, modified, or deleted. When the synchronization framework determines that the message was instigated by a local user's activity (as opposed to a background synchronization process), the synchronization framework synchronizes the locally-managed object with the remote database.

Claims (61)

1. A computer-implemented method for synchronizing data between a remote database and a local object-graph-and-persistence-framework that persists data to a local datastore, the method comprising:

receiving, by a synchronization framework executing on the computer, an indication from the local object-graph-and-persistence-framework that a locally-managed object has been retrieved from the local datastore and instantiated;

determining whether said indication was instigated by a local user's activity or by a background synchronization process; and

only when said indication is determined to have been instigated by said local user's activity, said synchronization framework:

determining whether said locally-managed object has been recently synchronized with the remote database;

when said locally-managed object has not been recently synchronized with the remote database, requesting a remote copy of said locally-managed object from the remote database; and

providing said locally-managed object for use in connection with a local user-interface provided by the computer;

wherein receiving said indication comprises receiving an ‘awakeFromFetch’ message from the local object-graph-and-persistence-framework.

2. The method of claim 1 , further comprising:

receiving said remote copy of said locally-managed object from the remote database; and

notifying said local user-interface that said remote copy of said locally-managed object has been received when said remote copy of said locally-managed object differs from said locally-managed object.

3. The method of claim 2 , further comprising persisting said remote copy of said locally-managed object to the local datastore when said remote copy of said locally-managed object differs from said locally-managed object.

4. The method of claim 2 , further comprising marking said remote copy of said locally-managed object as having been synchronized at a current time.

5. The method of claim 1 , wherein determining whether said indication was instigated by said local user's activity comprises determining whether said indication originated from a main application thread.

6. A computing apparatus comprising a processor and a memory having stored therein instructions that when executed by the processor, configure the apparatus to perform a method for synchronizing data between a remote database and a local object-graph-and-persistence-framework that persists data to a local datastore, the method comprising:

receiving, by a synchronization framework executing on the computing apparatus, an indication from the local object-graph-and-persistence-framework that a locally-managed object has been retrieved from the local datastore and instantiated;

determining whether said indication was instigated by a local user's activity or by a background synchronization process; and

only when said indication is determined to have been instigated by said local user's activity, said synchronization framework:

determining whether said locally-managed object has been recently synchronized with the remote database;

when said locally-managed object has not been recently synchronized with the remote database, requesting a remote copy of said locally-managed object from the remote database; and

providing said locally-managed object for use in connection with a local user-interface provided by the computing apparatus;

wherein receiving said indication comprises receiving an ‘awakeFromFetch’ message from the local object-graph-and-persistence-framework.

7. The apparatus of claim 6 , the method further comprising:

receiving said remote copy of said locally-managed object from the remote database; and

notifying said local user-interface that said remote copy of said locally-managed object has been received when said remote copy of said locally-managed object differs from said locally-managed object.

8. The apparatus of claim 7 , the method further comprising persisting said remote copy of said locally-managed object to the local datastore when said remote copy of said locally-managed object differs from said locally-managed object.

9. The apparatus of claim 7 , the method further comprising marking said remote copy of said locally-managed object as having been synchronized at a current time.

10. A non-transient computer-readable storage medium having stored therein instructions that when executed by a processor, configure the processor to perform a method for synchronizing data between a remote database and a local object-graph-and-persistence-framework that persists data to a local datastore, the method comprising:

receiving, by a synchronization framework executing on the processor, an indication from the local object-graph-and-persistence-framework that a locally-managed object has been retrieved from the local datastore and instantiated;

determining whether said indication was instigated by a local user's activity or by a background synchronization process; and

only when said indication is determined to have been instigated by said local user's activity, said synchronization framework:

determining whether said locally-managed object has been recently synchronized with the remote database;

when said locally-managed object has not been recently synchronized with the remote database, requesting a remote copy of said locally-managed object from the remote database; and

providing said locally-managed object for use in connection with a local user-interface provided by the processor;

wherein receiving said indication comprises receiving an ‘awakeFromFetch’ message from the local object-graph-and-persistence-framework.

11. The storage medium of claim 10 , the method further comprising:

receiving said remote copy of said locally-managed object from the remote database; and

notifying said local user-interface that said remote copy of said locally-managed object has been received when said remote copy of said locally-managed object differs from said locally-managed object.

12. The storage medium of claim 11 , the method further comprising persisting said remote copy of said locally-managed object to the local datastore when said remote copy of said locally-managed object differs from said locally-managed object.

13. The storage medium of claim 11 , the method further comprising marking said remote copy of said locally-managed object as having been synchronized at a current time.

14. A computer-implemented method for synchronizing data between a remote database and a local object-graph-and-persistence-framework that persists data to a local datastore, the method comprising:

receiving, by a synchronization framework executing on the computer, an indication from the local object-graph-and-persistence-framework to validate an instantiated locally-managed object prior to persisting said instantiated locally-managed object to the local datastore;

allowing the local object-graph-and-persistence-framework to persist said instantiated locally-managed object in the local datastore;

determining whether said indication was instigated by a local user's activity or by a background synchronization process; and

only when said indication is determined to have been instigated by said local user's activity, providing said instantiated locally-managed object to be persisted in the remote database;

wherein receiving said indication comprises receiving from the local object-graph-and-persistence-framework a message selected from a group consisting of ‘validateForDelete’, ‘validateForInsert’, and ‘validateForUpdate’.

15. The method of claim 14 , wherein determining whether said indication was instigated by said local user's activity comprises determining whether said indication originated from a main application thread.

16. A computing apparatus comprising a processor and a memory having stored therein instructions that when executed by the processor, configure the apparatus to perform a method for synchronizing data between a remote database and a local object-graph-and-persistence-framework that persists data to a local datastore, the method comprising:

receiving, by a synchronization framework executing on the computing apparatus, an indication from the local object-graph-and-persistence-framework to validate an instantiated locally-managed object prior to persisting said instantiated locally-managed object to the local datastore;

allowing the local object-graph-and-persistence-framework to persist said instantiated locally-managed object in the local datastore;

determining whether said indication was instigated by a local user's activity or by a background synchronization process; and

only when said indication is determined to have been instigated by said local user's activity, providing said instantiated locally-managed object to be persisted in the remote database;

wherein receiving said indication comprises receiving from the local object-graph-and-persistence-framework a message selected from a group consisting of ‘validateForDelete’, ‘validateForInsert’, and ‘validateForUpdate’.

17. The apparatus of claim 16 , wherein determining whether said indication was instigated by said local user's activity comprises determining whether said indication originated from a main application thread.

18. A non-transient computer-readable storage medium having stored therein instructions that when executed by a processor, configure the processor to perform a method for synchronizing data between a remote database and a local object-graph-and-persistence-framework that persists data to a local datastore, the method comprising:

receiving, by a synchronization framework executing on the processor, an indication from the local object-graph-and-persistence-framework to validate an instantiated locally-managed object prior to persisting said instantiated locally-managed object to the local datastore;

allowing the local object-graph-and-persistence-framework to persist said instantiated locally-managed object in the local datastore;

determining whether said indication was instigated by a local user's activity or by a background synchronization process; and

only when said indication is determined to have been instigated by said local user's activity, providing said instantiated locally-managed object to be persisted in the remote database;

wherein receiving said indication comprises receiving from the local object-graph-and-persistence-framework a message selected from a group consisting of ‘validateForDelete’, ‘validateForInsert’, and ‘validateForUpdate’.

19. The storage medium of claim 18 , wherein determining whether said indication was instigated by said local user's activity comprises determining whether said indication originated from a main application thread.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Mar 24, 2025
From: WESTERN ALLIANCE BANK
To: REALNETWORKS, INC.
Reel/Frame 070604/0956 →
MERGER AND CHANGE OF NAME Recorded Feb 13, 2023
From: REALNETWORKS, INC.; GREATER HEIGHTS ACQUISITION LLC
To: REALNETWORKS LLC
Reel/Frame 062746/0554 →
SECURITY INTEREST Recorded Aug 5, 2019
From: REALNETWORKS, INC.
To: WESTERN ALLIANCE BANK
Reel/Frame 049958/0344 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2013
From: BLANDING, STEPHEN
To: REALNETWORKS, INC.
Reel/Frame 030357/0790 →
Continuity (1)
Related Publication 20140201139A1 · Jul 17, 2014