Database Reference
In-Depth Information
of the library, its data management capabilities as well as scheduling possibilities
between and for each data operation, i.e., the set of all transfers requested
between the URIs provided as sources and destinations for the same data.
The library is developed in C++ and C, using internally boost ,and cmake to
build the project. It is freely available from a sourceforge repository:
http://sourceforge.net/projects/gridrpcdm/ .
3.1 Modularity of the Solution
The proposed implementation can be viewed as a meta-implementation of the
APIs (see Figure 1) since it provides the two GridRPC APIs, adding some seam-
less mechanisms for performance (scheduling etc. ) in a middleware and protocol
“agnostic” manner. The library does not interact directly with the middleware
nor the data storage servers. It proposes a fully interoperable API for any mid-
dleware and protocol/data manager with only very few specific developments of
simple modules. The module developers do not have to take care about which
data transfer protocol is available, like the data manager module developpers do
not have to care about which middleware is used to call remote procedures. To
do so, different interfaces are provided by the library:
- The client application interface: the external client API. Clients can use the
API directly without any knowledge about the underlying GridRPC middle-
ware. However, by adding a prefix to the service name, users can force the li-
brary to use a specific middleware ( e.g., "DIET:matmul" and "Ninf:matmul"
select respectively Diet and Ninf-G for the "matmul" service).
- The Services interface: it is a subset of the client API with some additional
utility functions facilitating servers conversions from standard GridRPC
servers to GridRPC Data Management servers.
- The Modules interface: the library defines a set of functions that should be
exposed by the module to extend the library capacities.
GridRPC Data Management Library
grpc_initialize(…)
grpc_function_handle_default(…)
grpc_function_handle_init(…)
grpc_get_handle(…)
grpc_call(…)
...
grpc_data_init(…)
grpc_data_memory_mapping_set(…)
grpc_data_memory_mapping_get(…)
grpc_data_container_set(…)
...
GridRPC middlewares
modules
Data managers modules
ftp module
DIET module
const char *
get_name()
const char **
get_protocols()
DIET module
Ninf module
http module
ftp module
grpc_initialize(…)
...
grpc_data_init_in(…)
grpc_data_init_out(…)
...
grpc_remote_transfer(…)
Local
module
DAGDA
module
...
...
Fig. 1. A very modular implementation
 
Search WWH ::




Custom Search