IP Library Granted Patent US 9,633,099
Granted Patent B2
US 9,633,099 · App. 14/798,084 · Granted Apr 25, 2017

Core data synchronization systems and methods

Inventor: Stephen M. Blanding (Redmond, WA)
Assignee: RealNetworks, Inc.
G06F17/30575G06F17/30578H04L67/1097
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,633,099
App. No.
14/798,084
Granted
Apr 25, 2017
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 (55)

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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 Oct 15, 2015
From: BLANDING, STEPHEN
To: REALNETWORKS, INC.
Reel/Frame 036805/0128 →
Continuity (2)
Continuation 13742169 · Jan 15, 2013
Related Publication 20150317372A1 · Nov 5, 2015