Hi, While working on the new cluster events implementation of these methods of DsoCluster:
Set<DsoNode> getNodesWithObject(Object object) Map<?, Set<DsoNode>> getNodesWithObjects(Collection<?> objects) <K> Set<K> getKeysForOrphanedValues(Map<K, ?> map) I'm obviously going through our whole channel, messages, stages SEDA infrastructure to communicate with the L2 and get the response back to the L1. I'm currently working on blocking these methods until the response from the server comes back. This leads me to think that it might be maybe more useful to redesign the API to be asynchronous with callbacks instead of blocking the executing threads. It's always possible for users to adapt async to sync, but not the other way around. I can definitely imagine situations where it's more important to free the executing thread immediately than to have the convenience of having a blocking response as a method return. The methods would then become: void getNodesWithObject(Object object, NodesWithObjectsResult callback) void getNodesWithObjects(Collection<?> objects, NodesWithObjectsResult callback) void getKeysForOrphanedValues(Map<K, ?> map, OrphanedKeysResult callback) With the callback interfaces something like: public interface NodesWithObjectsResult { void gotResults(Map<?, Set<DsoNode>> results); } public interface OrphanedKeysResult<K> { void getResults(Set<K> results); } The methods could then be used like this: cluster.getNodesWithObject(foo, new OrphanedKeysResult() { public void gotResults(Map<?, Set<DsoNode>> results) { // do stuff with results } }); Note that I just quickly typed these in the email, so there might be typos/errors in the code. What do you think? Geert -- Geert Bevin Terracotta - http://www.terracotta.org Uwyn "Use what you need" - http://uwyn.com RIFE Java application framework - http://rifers.org Flytecase Band - http://flytecase.be Music and words - http://gbevin.com _______________________________________________ tc-dev mailing list tc-dev@lists.terracotta.org http://lists.terracotta.org/mailman/listinfo/tc-dev