Service virtual machine
Abstract
Technology is disclosed for processing in a computer program a request received by a service virtual machine (SVM). The technology can receive a request in either a first form or a second form, wherein the first form includes a target textual identifier, a reply-to textual identifier, and a parameter, and the second form includes a target textual identifier and a parameter, but not a reply-to textual identifier; identify, based on the received target textual identifier, a procedure; invoke the identified procedure and providing a value of the received parameter to the invoked procedure; in an event the received request is in the first form: receive a result from the invoked procedure; form a reply-to request in the second form, the second form including as a target textual identifier the reply-to textual identifier in the received request, and as a parameter the result received from the invoked procedure, further wherein the second form does not include a reply-to textual identifier; and send, to the SVM, the formed reply-to request.
Claims
exact text as granted — not AI-modified1 . A method for processing in a computer program a request received by a service virtual machine (SVM), comprising:
receiving a request, wherein the request includes a reference and a parameter; identifying, based on the reference a native procedure; invoking the native procedure and providing the parameter to the native procedure; determining if the request comprises a target textual identifier and a reply-to service identifier; in an event the request includes the reply-to service identifier: receiving a result from the native procedure, forming a reply-to request, the reply-to request including the reply-to service identifier, and the result received from the native procedure, and sending, to the SVM, the reply-to request; in an event the request does not include the target textual identifier, or the target textual identifier is associated with the SVM, processing the received request; in an event the request includes the target textual identifier that identifies a neighbor SVM, submitting the request to the neighbor SVM; and in an event the request includes the target textual identifier that does not identify a neighbor SVM, receiving a neighbor SVM textual identifier, and then submitting the request to the neighbor SVM identified by the neighbor SVM textual identifier.
2 . The method of claim 1 , wherein the native procedure is a standalone procedure or a global procedure.
3 . The method of claim 1 , wherein the native procedure is a method provided by an object.
4 . The method of claim 1 , wherein the native procedure is a method provided by a class.
5 . (canceled)
6 . The method of claim 1 , wherein the neighbor SVM textual identifier is a result of the SVM performing a routing algorithm.
7 . The method of claim 1 , wherein the neighbor SVM textual identifier is a result of the SVM reading a memory configuration.
8 . The method of claim 1 , wherein the neighbor SVM textual identifier is a result of the SVM reading a configuration file.
9 . The method of claim 1 , wherein the neighbor SVM textual identifier is received by the SVM from outside the SVM.
10 . The method of claim 1 , wherein the reference includes an object identifier and a method identifier identifying the native procedure.
11 . The method of claim 10 , further comprising identifying a native object based on the object identifier.
12 . The method of claim 11 , further comprising identifying a native method in the native object based on the method identifier, wherein the native procedure is the native method.
13 . The method of claim 12 , wherein invoking the native procedure comprises invoking the native method.
14 . The method of claim 10 , further comprising identifying multiple objects based on the object identifier.
15 . The method of claim 14 , further comprising identifying a single object from the multiple objects.
16 . The method of claim 15 , further comprising identifying a native method in the single object based on the method identifier, wherein the native procedure is the native method.
17 . The method of claim 11 , further comprising allowing only one thread at a time to invoke a method in the native object.
18 . The method of claim 1 , further comprising:
receiving the request using a first thread; and invoking the native procedure using a second thread.
19 . The method of claim 18 , wherein the first thread is asynchronous of the second thread.
20 . The method of claim 19 , wherein the first thread and the second thread are two different threads.
21 . The method of claim 20 , wherein the first thread and the second thread are the same thread, but are asynchronous to each other due to thread scheduling.
22 . (canceled)
23 . (canceled)
24 . A method for processing, in a computer program, requests received by a source service virtual machine (SVM), comprising:
receiving, by the source SVM, a first request from within the computer program, wherein the first request includes at least a first target reference and a first parameter; if the first request does not comprise a target SVM identifier or the target SVM identifier is associated with the source SVM, then:
identifying, based on the first target reference, a callable programming unit within the computer program,
invoking the callable programming unit and providing the first parameter to the callable programming unit, and
processing, by the source SVM, a next request if the first request does not include a reply-to reference;
in an event the first request also includes a reply-to reference:
receiving a result from the callable programming unit,
wherein the result is based at least in part on a value of the first parameter,
forming a second request, wherein the second request includes a second target reference and a second parameter, the second target reference is the reply-to reference, and the second parameter is the result received from the callable programming unit, and
sending the second request to the source SVM from within the computer program such that the second request carries the result received from the callable programming unit to the source SVM as a subsequent request and the second request is only formed and sent to the source SVM after the callable programming unit generates the result for the second request to be processed by the source SVM; and
if the first request comprises a target SVM identifier not associated with the source SVM, then determining if the target SVM identifier is associated with a connected service virtual machine and sending the request to the connected service virtual machine if the target SVM identifier is associated with the connected service virtual machine.
25 . A computer-implemented method for providing a service virtual machine, the method comprising:
receiving a request from a caller, the request comprising a reference to a virtual service; if the request does not comprise a target identifier or the target identifier is associated with the service virtual machine, then invoking a native programming unit associated with the virtual service; and if the request comprises a target identifier not associated with the service virtual machine, then determining if the target identifier is associated with a connected service virtual machine and sending the request to the connected service virtual machine if the target identifier is associated with the connected service virtual machine.
26 . The method of claim 25 , wherein:
determining if the target identifier is associated with a connected service virtual machine comprises determining if the target identifier is associated with a neighbor service virtual machine; and sending the request comprises sending the request to the neighbor service virtual machine if the target identifier is associated with the neighbor service virtual machine.
27 . The method of claim 25 , wherein:
determining if the target identifier is associated with a connected service virtual machine comprises seeking routing information that indicates a neighbor service virtual machine is in or stores a route to the connected service virtual machine; and sending the request to the neighbor service virtual machine if the routing information indicates the neighbor service virtual machine is in or stores a route to the connected service virtual machine.
28 . The method of claim 25 , wherein:
determining if the target identifier is associated with a connected service virtual machine comprises determining if the target identifier is associated with a neighbor service virtual machine; sending the request comprises sending the request to the neighbor service virtual machine if the target identifier is associated with the neighbor service virtual machine; if the target identifier is not associated with a neighbor service machine, seeking routing information that indicates a neighbor service virtual machine is in or stores a route to the connected service virtual machine; and sending the request to the neighbor service virtual machine if the routing information indicates the neighbor service virtual machine is in or stores a route to the connected service virtual machine.
29 . The method of claim 25 , further comprising:
receiving a result from the native programming unit associated with the virtual service; and if the request comprises a reference to a reply-to virtual service:
forming a second request comprising a second target identifier associated with the reply-to virtual service,
if the second target identifier is associated with the service virtual machine, then invoking a second native programming unit associated with the reply-to virtual service, and
if the second target identifier is not associated with the service virtual machine, then determining if the second target identifier is associated with a connected service virtual machine and sending the request to the connected service virtual machine if the second target identifier is associated with the connected service virtual machine.
30 . A method for processing a request received by a service virtual machine, the method comprising:
receiving a request, wherein the request includes a target reference and a parameter; determining if the target reference comprises a service identifier; if the target reference does not include the service identifier or the service identifier is associated with the service virtual machine, then:
identifying a native procedure based on the target reference,
invoking the native procedure with the parameter,
determining if the request comprises a reply-to reference, and
in an event the request includes the reply-to reference:
receiving a result from the native procedure,
forming a reply-to request, the reply-to request comprising the reply-to reference and the result received from the native procedure, and
sending the reply-to request to the service virtual machine; and
if the service identifier is not associated with the service virtual machine, forwarding the request.
31 . The method of claim 30 , wherein forwarding the request comprises submitting the request to a neighbor service virtual machine if the service identifier identifies the neighbor service virtual machine.
32 . The method of claim 30 , wherein forwarding the request comprises submitting the request to a router.
33 . The method of claim 30 , wherein forwarding the request comprises receiving a neighbor service virtual machine identifier and submitting the request to a neighbor service virtual machine identified by the neighbor service virtual machine identifier if the service identifier does not identify a neighbor service virtual machine.
34 . The method of claim 33 , wherein receiving the neighbor service virtual machine identifier is received from a routing algorithm executed by the service virtual machine.
35 . The method of claim 33 , wherein the neighbor service virtual machine identifier is received from a memory configuration read by the service virtual machine.
36 . The method of claim 33 , wherein the neighbor service virtual machine identifier is received from a configuration file read by the service virtual machine.
37 . The method of claim 33 , wherein the neighbor service virtual machine identifier is received from outside the service virtual machine.
38 . The method of claim 30 , wherein forwarding the request comprises:
if the service identifier identifies a neighbor service virtual machine, submitting the request to the neighbor service virtual machine; if the service identifier does not identify a neighbor service virtual machine, receiving a neighbor service virtual machine identifier and submitting the request to a neighbor service virtual machine identified by the neighbor service virtual machine identifier; and if the service identifier does not identify a known service virtual machine, submitting the request to a router.
39 . A system for providing a virtual service to a calling program, the system comprising:
a target service virtual machine; and a source service virtual machine connected to the target service virtual machine, wherein the source service virtual machine is configured to:
receive a request from the calling program, the request comprising a reference to the virtual service,
determine if the request includes a target identifier,
if the request does not comprise a target identifier or the target identifier is associated with the source service virtual machine, then invoking a native programming unit associated with the virtual service, and
if the target identifier is not associated with the source service virtual machine, then determining if the target identifier is associated with the target service virtual machine and sending the request to the target service virtual machine if the target identifier is associated with the target service virtual machine.Join the waitlist — get patent alerts
Track US2021263788A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.