Method and system for network marshalling of interface pointers for remote procedure calls
First Claim
1. A method in a computer system network for passing a pointer to an interface of an object from a server process in one node of the network to a client process in another node of the network to enable the client process to invoke function members of the interface, the method comprising the steps of:
- within the server process,instantiating the object, the object having an implementation of the interface, the interface having a function member;
creating an interface stub for receiving a request to invoke the function member of the interface and for invoking the requested function member upon receiving the request;
creating a stub channel for receiving the request to invoke the function member of the interface and for forwarding the request to the created interface stub; and
sending an identifier of the stub channel to the client process via network communications; and
within the client process,receiving the identifier of the stub channel from the server process;
creating an interface proxy for receiving the request to invoke a function member of the interface and for sending the request to a proxy channel;
obtaining a pointer to the created interface proxy; and
creating the proxy channel for receiving the request from the created interface proxy and sending the request to the stub channel identified by the received identifier,whereby the client process may use the pointer to the interface proxy to invoke the function member of the interface of the object instantiated within the server process.
2 Assignments
0 Petitions
Accused Products
Abstract
A computer method and system for passing a pointer to an interface from a server process to a client process. In a preferred embodiment, the server process instantiates an object that has multiple interfaces. The server process identifies an interface to pass to the client process and creates a stub object for receiving a request to invoke a function member of the interface and for invoking the requested function member upon receiving the request. The server process then sends an identifier of the stub to the client process. When the client process receives the identifier of the stub, it instantiates a proxy object for receiving requests to invoke a function member of the interface and for sending the request to the identified stub. The client process can then invoke the function members of the interface by invoking function members of the proxy object. The proxy object sends a request to the identified stub. The identified stub then invokes the corresponding function member of the interface.
-
Citations
50 Claims
-
1. A method in a computer system network for passing a pointer to an interface of an object from a server process in one node of the network to a client process in another node of the network to enable the client process to invoke function members of the interface, the method comprising the steps of:
-
within the server process, instantiating the object, the object having an implementation of the interface, the interface having a function member; creating an interface stub for receiving a request to invoke the function member of the interface and for invoking the requested function member upon receiving the request; creating a stub channel for receiving the request to invoke the function member of the interface and for forwarding the request to the created interface stub; and sending an identifier of the stub channel to the client process via network communications; and within the client process, receiving the identifier of the stub channel from the server process; creating an interface proxy for receiving the request to invoke a function member of the interface and for sending the request to a proxy channel; obtaining a pointer to the created interface proxy; and creating the proxy channel for receiving the request from the created interface proxy and sending the request to the stub channel identified by the received identifier, whereby the client process may use the pointer to the interface proxy to invoke the function member of the interface of the object instantiated within the server process. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method in a computer system for passing a pointer to an interface of an object from a server process to a client process to enable the client process to invoke function members of the interface, the method comprising the steps of:
-
within the server process, instantiating the object, the object having a plurality of interfaces, each interface having a function member; identifying an interface of the object to pass to the client process; creating a stub for receiving a request to invoke the function member of the identified interface and for invoking the function member upon receiving the request, the stub having an identifier; and sending the identifier of the stub to the client process; and within the client process, receiving the identifier of the stub from the server process; instantiating a proxy object for receiving requests to invoke a function member of the interface and for sending the request to the identified stub; and obtaining a pointer to the instantiated proxy object, whereby the client process may use the pointer to the interface proxy to invoke the function member of the interface of the object instantiated within the server process. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A method in a computer system for passing a pointer to an interface of an object from a server process to a client process to enable the client process to invoke function members of the interface, the method comprising the steps of:
-
within the server process, instantiating the object, the object having a plurality of interfaces, each interface having a function member, the object further having a marshalling function member for performing object-specific marshalling for a pointer to one of the plurality of interfaces; identifying an interface of the object to pass to the client process; invoking the marshalling function member of the object to marshal the identified interface; and sending to the client process a reference to the object instantiated within the server process and an unmarshal class identifier identifying the class of the proxy object to be instantiated by the client process; and within the client process, receiving from the server process the reference to the object instantiated within the server process and the unmarshal class identifier; instantiating an object of the class identified by the unmarshal class identifier, the object of the class identified by the unmarshal class identifier having an unmarshalling function member; obtaining a pointer to the object of the class identified by the unmarshal class identifier; and invoking the unmarshalling function member of the object of the class identified by the unmarshal class identifier using the obtained pointer and passing the reference to the object instantiated within the server proxy, the unmarshalling function member for performing object-specific unmarshalling for the pointer to the identified interface, whereby the client process may use the pointer to the object of the class identified by the unmarshal class identifier to invoke a function member of the identified interface of the object instantiated within the server process. - View Dependent Claims (14, 15, 16, 17, 18)
-
-
19. A method in a computer system of passing a pointer to an object from a server process to a client process to enable the client process to invoke function members of the object, the method comprising the steps of:
-
within the server process, instantiating the object; creating a stub for receiving a request to invoke a function member of the object and for invoking the requested function member upon receiving the request, the stub having an identifier; and sending an unmarshal class identifier identifying the class of a proxy object to instantiate within the client process and the identifier of the stub to the client process; and within the client process, receiving the unmarshal class identifier and the identifier of the stub from the server process; accessing code to instantiate the proxy object of the class identified by the unmarshal class identifier; and executing the accessed code, including the substeps of; instantiating a proxy object of the class identified by the unmarshal class identifier, and initializing the proxy object to contain a reference to the identified stub so that when the proxy object receives requests to invoke a function member of the object, the proxy object sends the request to the identified stub; and obtaining a pointer to the instantiated proxy object, wherein the client process may use the pointer to the proxy object to invoke function members of the object instantiated within the server process. - View Dependent Claims (20, 21, 22, 23)
-
-
24. A method in a computer system of passing a pointer to an object from a server process to a client process to enable the client process to invoke function members of the object, the method comprising the steps of:
-
within the server process, instantiating the object, the object having a marshalling function member for performing object-specific marshalling for a pointer to the object; invoking the marshalling function member of the object to marshal the identified interface; and sending to the client process a reference to the object instantiated within the server process and an unmarshal class identifier identifying the class of a proxy object to instantiate in the client process; and within the client process, receiving from the server process the reference to the object instantiated within the server process and the unmarshal class identifier; accessing code to instantiate the object of the class identified by the unmarshal class identifier; executing the accessed code to instantiate an object of the class identified by the unmarshal class identifier, the object of the class identified by the unmarshal class identifier having an unmarshalling function member; obtaining a pointer to the object of the class identified by the unmarshal class identifier; and invoking the unmarshalling function member of the object of the class identified by the unmarshal class identifier using the obtained pointer and passing the reference to the object instantiated within the server process, the unmarshalling function member for performing object-specific unmarshalling for the pointer to the object, whereby the client process may use the pointer to the object of the class identified by the unmarshal class identifier to invoke function members of the object instantiated within the server process. - View Dependent Claims (25, 26, 27, 28)
-
-
29. A method in a computer system for passing a pointer to an object from a server process to a first client process and from the first client process to a second client process to enable the client process to invoke function members of the object, the method comprising the steps of:
-
within the server process, instantiating the object; creating a stub for receiving a request to invoke a function member of the object and for invoking the requested function member upon receiving the request, the stub having an identifier; and sending an unmarshal class identifier identifying the class of an object to be instantiated in the first and second client processes and the identifier of the stub to the first client process; within the first client process, receiving the unmarshal class identifier and the identifier of the stub from the server process; accessing code to instantiate a first proxy object of the class identified by the unmarshal class identifier; executing the accessed code, including the substeps of; instantiating a first proxy object of the class identified by the unmarshal class identifier and having a marshalling function member to specify that the identifier of the stub is to be sent to the second client process, and initializing the first proxy object to contain a reference to the identified stub so that when the first proxy object receives requests from the first client process to invoke a function member of the object, the first proxy object sends the request to the identified stub; obtaining a pointer to the first proxy object; invoking the marshalling function member of the proxy object; and sending the unmarshal class identifier and the identifier of the stub to the second client process; and within the second client process, receiving the unmarshal class identifier and the identifier of the stub from the first client process; accessing code to instantiate a second proxy object of the class identified by the unmarshal class identifier; executing the accessed code, including the substeps of; instantiating a second a proxy object of the class identified by the unmarshal class identifier, and initializing the second proxy object to contain a reference to the identified stub so that when the second proxy object receives requests from the second client process to invoke a function member of the object, the second proxy object sends the request to the identified stub; and obtaining a pointer to the second proxy object, whereby the first client process may use the pointer to the first proxy object to invoke function members of the object instantiated within the server process and the second client process may use the pointer to the second proxy object to make function members of the object instantiated in the server process. - View Dependent Claims (30, 31, 32, 33, 34)
-
-
35. A method in a computer system of passing a pointer to an object of a selected class from a server process to a client process to enable the client process to invoke function members of the object, the method comprising the steps of:
-
within the server process, instantiating the object in shared memory that is accessible by the server process and the client process, the instantiated object having a data access function member to access data members of the object; storing an identifier of the selected class in a message as an unmarshal class identifier; invoking a marshalling function member of the object instantiated within the server process to store a pointer to data members of the object in the message; and sending the message to the client process; and within the client process, receiving the message from the server process; retrieving the unmarshal class identifier from the message; accessing code to instantiate an object of the class identified by the unmarshal class identifier; executing the accessed code to instantiate an object of the class identified by the unmarshal class identifier, thereby instantiating an object of the selected class, the object of the class identified by the unmarshal class identifier having an unmarshalling function member; obtaining a pointer to the instantiated object of the class identified by the unmarshal class identifier; and invoking the unmarshalling function member of the object of the class identified by the unmarshal class identifier, including the substeps of; retrieving from the message the pointer to data members of the object instantiated within the server process, and storing in the object of the class identified by the unmarshal class identifier the retrieved pointer to the data members so that the data access function member of the object of the class identified by the unmarshal class identifier can access the data members in shared memory. - View Dependent Claims (36, 37, 38, 39, 40, 41)
-
-
42. A method in a computer system of passing a pointer to an immutable object having data members and function members from a server process to a client process, the method comprising the steps of:
-
within the server process, instantiating the immutable object; storing an unmarshal class identifier in a message; invoking a marshalling function member of the immutable object to store the data members of the object in the message; and sending the message to the client process; and within the client process, receiving the message from the server process; retrieving the unmarshal class identifier from the message; accessing code to instantiate an object of the class identified by the unmarshal class identifier; executing the accessed code to instantiate an object of the class identified by the unmarshal class identifier, the object of the class identified by the unmarshal class identifier having an unmarshalling function member; and invoking the unmarshalling function member of the object of the class identified by the unmarshal class identifier, including the substeps of; retrieving the data members from the message, and storing the retrieved data members in the object of the class identified by the unmarshal class identifier so that the function members of the object of the class identified by the unmarshal class identifier can access the data members of the immutable object. - View Dependent Claims (43, 44, 45, 46, 47, 48)
-
-
49. A method in a computer system for performing a function call from a server process to a function within a client process, the function call having an in parameter that is a pointer to an interface of a real object instantiated within the server process, the interface of the real object having a function member, the method comprising the steps of:
-
within the server process, creating a stub for receiving a request invoke the function member; marshalling an identifier of the stub into a message; and sending the message to the client process; and within the client process, receiving the message from the server process; unmarshalling the identifier of the stub; creating a proxy for receiving the request to invoke the function member from the client process and sending it to the stub identified by the unmarshalled identifier; obtaining a pointer to the created proxy; and calling the function within the client process, passing the obtained pointer to the created proxy as an in parameter.
-
-
50. A method in a computer system for performing a function call from a client process to a function within a server process, the function call having an out parameter that is a pointer to an interface of a real object instantiated within the server process, the interface of the real object having a function member, the method comprising the steps of:
-
within the client process, initiating a call to the function within the server process; within the server process, calling the function within the client process, the function producing the out parameter that is a pointer to the interface of the real object; creating a stub for receiving a request invoke the function member; marshalling an identifier of the stub into a message; and sending the message to the client process; and within the client process, receiving the message from the server process; unmarshalling the identifier of the stub; creating a proxy for receiving the request to invoke the function member from the client process and sending it to the stub identified by the unmarshalled identifier; obtaining a pointer to the created proxy; and returning the obtained pointer to the created proxy as an out parameter of the function call initiated within the client process.
-
Specification