Philippe Van Dyck wrote:
It may sound a bit extreme but what about using streams as the base
interface and converting values to streams asap ?
The conversion could be seen as the marshaling operation and the
result as a
stream of bytes ?
The 'base' interface would be as simple as:
OutputStream<byte[]> get(K)
put(K, InputStream<byte[]>)
I like this. Given an appropriate chunk size, I can envisage code like this:
cache.put("goldfinger", new
FileInputStream("/home/bela/bond_movies/goldfinger.iso"));
and my movie would be chunked up and stored in the grid (Infinispan
would close the input stream).
Maybe we should also offer some helper methods, similar to the UNIX
system call 'sendfile', e.g.
void getAndStore(K key, String filename),
which retrieves data from the cache and stores it in the file system,
ie. as syntactic sugar around
OutputStream out=new FileOutputStream("/home/bela/tmp.iso");
OutputStream output=cache.get("goldfinger");
// transfer output --> out and close out
--
Bela Ban
Lead JGroups / Clustering Team
JBoss