IP Library Granted Patent US 9,621,676
Granted Patent B2
US 9,621,676 · App. 15/161,982 · Granted Apr 11, 2017

System and method for accessing data objects via remote references

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,621,676
App. No.
15/161,982
Granted
Apr 11, 2017
Kind
B2
Abstract

One embodiment of the present invention sets forth a method for providing access to a data object stored on an application server from within a client side machine. The method includes creating a remote reference that is linked to the data object, transmitting the remote reference to an application executing on a second machine, receiving an expression to evaluate that includes the remote reference, accessing at least one element included in the data object via the remote reference, evaluating the expression based on the at least one element to produce a result, and transmitting the result to the application.

Claims (61)

1. A method comprising:

receiving, by a first machine, from an application executing on a second machine, a request for creating a data object and a remote reference to the data object;

in response to the request, creating, by the first machine, the data object;

generating a ticket that references the data object;

creating, by the first machine, a proxy data object based on the ticket, wherein the proxy data object forwards calls received by the proxy data object to the data object using the ticket;

creating, by the first machine, a remote reference comprising a wrapper corresponding to the proxy data object;

transmitting the remote reference from the first machine to the application executing on the second machine;

receiving, by the first machine, from the application, a request comprising the remote reference and one or more operations to be performed on the data object;

accessing, by the first machine, at least one element included in the data object using the remote reference;

performing, by the first machine, the one or more operations based on the at least one element to produce a result;

transmitting the result from the first machine to the application;

determining, that the proxy data object is deleted and that no other proxy data objects reference the data object; and

responsive to determining that the proxy data object is deleted and that no other proxy data objects reference the data object, de-allocating memory at the first machine that is allocated to the data object.

2. The method of claim 1 ,

wherein the request comprises an expression that includes the remote reference and describes the one or more operations,

wherein performing the one or more operations comprises evaluating the expression.

3. The method of claim 2 , wherein the expression is evaluated based on a value that is retrieved from the data object when the at least one element is accessed using the remote reference.

4. The method of claim 1 , wherein the performing the one or more operations comprises by transmitting a first call to the proxy data object for accessing the at least one element that is then forwarded to the data object to access the at least one element.

5. The method of claim 1 , wherein the remote reference further comprises at least one property of the data object, wherein the at least one property is accessible via the remote reference without accessing the data object via the proxy data object.

6. The method of claim 1 , wherein the proxy data object exposes a plurality of elements included in the data object, including the at least one element, to the application.

7. The method of claim 1 , wherein the at least one element comprises a property associated with the data object.

8. The method of claim 1 , wherein the at least one element comprises a method that is performed on one or more properties associated with the data object.

9. The method of claim 1 , wherein the wrapper further comprises at least one method of the data object, wherein the at least one method is accessible via the wrapper without accessing the data object via the proxy data object.

10. One or more non-transitory computer readable media storing instructions that, when executed by a processor of a first machine, cause the processor to perform:

receiving, by a first machine, from an application executing on a second machine, a request for creating a data object and a remote reference to the data object;

in response to the request, creating, by the first machine, the data object;

generating a ticket that references the data object;

creating, by the first machine, a proxy data object based on the ticket, wherein the proxy data object forwards calls received by the proxy data object to the data object using the ticket;

creating, by the first machine, a remote reference comprising a wrapper corresponding to the proxy data object;

transmitting the remote reference from the first machine to the application executing on the second machine;

receiving, by the first machine, from the application, a request comprising the remote reference and one or more operations to be performed on the data object;

accessing, by the first machine, at least one element included in the data object using the remote reference;

performing, by the first machine, the one or more operations based on the at least one element to produce a result;

transmitting the result from the first machine to the application;

determining, that the proxy data object is deleted and that no other proxy data objects reference the data object; and

responsive to determining that the proxy data object is deleted and that no other proxy data objects reference the data object, de-allocating memory at the first machine that is allocated to the data object.

11. The one or more non-transitory computer readable media of claim 10 ,

wherein the request comprises an expression that includes the remote reference and describes the one or more operations,

wherein performing the one or more operations comprises evaluating the expression.

12. The one or more non-transitory computer readable media of claim 11 , wherein the expression is evaluated based on a value that is retrieved from the data object when the at least one element is accessed using the remote reference.

13. The one or more non-transitory computer readable media of claim 10 , wherein the performing the one or more operations comprises by transmitting a first call to the proxy data object for accessing the at least one element that is then forwarded to the data object to access the at least one element.

14. The one or more non-transitory computer readable media of claim 10 , wherein the remote reference further comprises at least one property of the data object, wherein the at least one property is accessible via the remote reference without accessing the data object via the proxy data object.

15. The one or more non-transitory computer readable media of claim 10 , wherein the proxy data object exposes a plurality of elements included in the data object, including the at least one element, to the application.

16. The one or more non-transitory computer readable media of claim 10 , wherein the at least one element comprises a property associated with the data object.

17. The one or more non-transitory computer readable media of claim 10 , wherein the at least one element comprises a method that is performed on one or more properties associated with the data object.

18. The one or more non-transitory computer readable media of claim 10 , wherein the wrapper further comprises at least one method of the data object, wherein the at least one method is accessible via the wrapper without accessing the data object via the proxy data object.

19. A computer system comprising:

a memory; and

a processor configured to perform:

receiving, by a first machine, from an application executing on a second machine, a request for creating a data object and a remote reference to the data object;

in response to the request, creating, by the first machine, the data object;

generating a ticket that references the data object;

creating, by the first machine, a proxy data object based on the ticket, wherein the proxy data object forwards calls received by the proxy data object to the data object using the ticket;

creating, by the first machine, a remote reference comprising a wrapper corresponding to the proxy data object;

transmitting the remote reference from the first machine to the application executing on the second machine;

receiving, by the first machine, from the application, a request comprising the remote reference and one or more operations to be performed on the data object;

accessing, by the first machine, at least one element included in the data object using the remote reference;

performing, by the first machine, the one or more operations based on the at least one element to produce a result;

transmitting the result from the first machine to the application;

determining, that the proxy data object is deleted and that no other proxy data objects reference the data object; and

responsive to determining that the proxy data object is deleted and that no other proxy data objects reference the data object, de-allocating memory at the first machine that is allocated to the data object.

Assignments (7)
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →