Abstract:
A method and apparatus for asynchronously calling and implementing objects is disclosed. Object calls to perform an operation are performed asynchronously by calling the appropriate stub function from the client application and passing in the object reference, input parameters, and a pointer to a completion routine. The object reference, input parameters, and completion routine address are provided to a client-side execution environment. The client-side execution environment stores the completion routine address and transmits the input parameters to a server-side execution environment. The server-side execution environment calls a method in the server application that implements the requested operation. The server application performs the requested operation. Once the call has been responded to, the client-side execution environment calls the completion routine and passes it the output parameters to the requested operation. The client application can continue performing other asynchronous operations before the completion routine is called. To asynchronously implement an object that has been called, the appropriate method function in the server application is called which, in turn, calls an asynchronous operation. Once the asynchronous operation returns, the application responds to the client application.
Abstract:
A method for defining Interface Definition Language-defined data types, operations, or interfaces is defined. In particular, an ASCII string descriptor is generated that identifies the data type, interface, or operation. Characters are used to identify the base types of any data types, while a combination of characters and numerals are used to identify compound types and characteristics of those compound types. For operations, characters and numerals are used to identify the number and types of parameters, number of exceptions, and number of contexts contained in the operation. Interfaces are described using a numeral that indicates the number of operations included in the interfaces. By converting the original IDL description to an ASCII string, generic functions can be created to transport object calls across heterogeneous systems.
Abstract:
A method and apparatus for performing distributed object calls uses proxies and memory allocation and deallocation. Specifically, an object reference to an object is obtained. The object reference is used to create a proxy handle data structure that will represent the object. The proxy handle is passed to a client application stub function which calls the object. The stub function is also passed input and output parameters along with exception information. An object request broker finds an appropriate implementation in a server application. The server application allocates memory for implementing the call. The object is implemented and the memory allocated by the server application is deallocated. The server application responds to the client, whereupon the client makes another object call using the same proxy handle or destroys the proxy handle. Multiple initialization of object calls is avoided because the object call can be initialized just once for a particular object. Moreover, resources are preserved by minimizing wild pointers and memory leaks that can occur during the calling and implementation of objects.
Abstract:
A method and apparatus for transporting IDL-defined data structures to and from a format convenient for transport between two computers are disclosed. The data structures are originally described in a string. The string description is converted to a different format containing additional information about the alignment and size of the data structure. An application in the sending computer removes the alignment form the data structure and stores the data structure in a buffer. The data structure is stored in the output buffer in a predetermined format that is based upon the type of the data structure. The buffer is then transmitted to a data file or to the memory of the receiving computer. The receiving computer extracts the data structure from the buffer based upon the predetermined format. The data structure is realigned and stored in the memory of the second computer.
Abstract:
A method for defining Interface Definition Language-defined data types, operations, or interfaces is defined. In particular, an ASCII string descriptor is generated that identifies the data type, interface, or operation. Characters are used to identify the base types of any data types, while a combination of characters and numerals are used to identify compound types and characteristics of those compound types. For operations, characters and numerals are used to identify the number and types of parameters, number of exceptions, and number of contexts contained in the operation. Interfaces are described using a numeral that indicates the number of operations included in the interfaces. By converting the original IDL description to an ASCII string, generic functions can be created to transport object calls across heterogeneous systems.
Abstract:
A method and apparatus for asynchronously calling and implementing objects is disclosed. Object calls to perform an operation are performed asynchronously by calling the appropriate stub function from the client application and passing in the object reference, input parameters, and a pointer to a completion routine. The object reference, input parameters, and completion routine address are provided to a client-side execution environment. The client-side execution environment stores the completion routine address and transmits the input parameters to a server-side execution environment. The server-side execution environment calls a method in the server application that implements the requested operation. The server application performs the requested operation. Once the call has been responded to, the client-side execution environment calls the completion routine and passes it the output parameters to the requested operation. The client application can continue performing other asynchronous operations before the completion routine is called. To asynchronously implement an object that has been called, the appropriate method function in the server application is called which, in turn, calls an asynchronous operation. Once the asynchronous operation returns, the application responds to the client application.
Abstract:
A method and apparatus for transporting IDL-defined data structures to and from a format convenient for transport between two computers are disclosed. The data structures are originally described in a string. The string description is converted to a different format containing additional information about the alignment and size of the data structure. An application in the sending computer removes the alignment form the data structure and stores the data structure in a buffer. The data structure is stored in the output buffer in a predetermined format that is based upon the type of the data structure. The buffer is then transmitted to a data file or to the memory of the receiving computer. The receiving computer extracts the data structure from the buffer based upon the predetermined format. The data structure is realigned and stored in the memory of the second computer.
Abstract:
A method and apparatus for performing distributed object calls uses proxies and memory allocation and deallocation. Specifically, an object reference to an object is obtained. The object reference is used to create a proxy handle data structure that will represent the object. The proxy handle is passed to a client application stub function which calls the object. The stub function is also passed input and output parameters along with exception information. An object request broker finds an appropriate implementation in a server application. The server application allocates memory for implementing the call. The object is implemented and the memory allocated by the server application is deallocated. The server application responds to the client, whereupon the client makes another object call using the same proxy handle or destroys the proxy handle. Multiple initialization of object calls is avoided because the object call can be initialized just once for a particular object. Moreover, resources are preserved by minimizing wild pointers and memory leaks that can occur during the calling and implementation of objects.