00001 /* 00002 * InvocationService.hpp 00003 * 00004 * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. 00005 * 00006 * Oracle is a registered trademarks of Oracle Corporation and/or its 00007 * affiliates. 00008 * 00009 * This software is the confidential and proprietary information of Oracle 00010 * Corporation. You shall not disclose such confidential and proprietary 00011 * information and shall use it only in accordance with the terms of the 00012 * license agreement you entered into with Oracle. 00013 * 00014 * This notice may not be removed or altered. 00015 */ 00016 #ifndef COH_INVOCATION_SERVICE_HPP 00017 #define COH_INVOCATION_SERVICE_HPP 00018 00019 #include "coherence/lang.ns" 00020 00021 #include "coherence/net/Invocable.hpp" 00022 #include "coherence/net/Service.hpp" 00023 #include "coherence/util/Map.hpp" 00024 #include "coherence/util/Set.hpp" 00025 00026 COH_OPEN_NAMESPACE2(coherence,net) 00027 00028 using coherence::util::Map; 00029 using coherence::util::Set; 00030 00031 00032 /** 00033 * The InvocationService is a Service for delivering executable objects to the 00034 * cluster member to which the client is connected. The executable objects 00035 * must implement the Invocable interface, which extends the Runnable 00036 * interface. Using this interface, application code can cause execution of an 00037 * Invocable object to occur within the cluster. 00038 * 00039 * @author jh 2007.12.21 00040 */ 00041 class COH_EXPORT InvocationService 00042 : public interface_spec<InvocationService, 00043 implements<Service> > 00044 { 00045 // ----- InvocationService interface ------------------------------------ 00046 00047 public: 00048 /** 00049 * Synchronously invoke the specified task on each of the specified 00050 * members. This method will not return until the specified members 00051 * have completed their processing, failed in their processing, or 00052 * died trying. 00053 * <p> 00054 * Currently, the client implementation of this interface only 00055 * supports invocation on the cluster member to which the client is 00056 * connected. Therefore, the specified Set of Member objects must 00057 * be NULL. 00058 * 00059 * @param hTask the Invocable object to distribute to the 00060 * specified members in order to be invoked on 00061 * those members 00062 * @param vSetMembers must be NULL (future use) 00063 * 00064 * @return a Map of result objects keyed by Member object 00065 */ 00066 virtual Map::View query(Invocable::Handle hTask, Set::View vSetMembers) = 0; 00067 }; 00068 00069 COH_CLOSE_NAMESPACE2 00070 00071 #endif // COH_INVOCATION_SERVICE_HPP