Updated Branches: refs/heads/javelin bcff47d4b -> 17f2af409
modify RPC API flavor to be in Java Future<T> style Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/17f2af40 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/17f2af40 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/17f2af40 Branch: refs/heads/javelin Commit: 17f2af409e69e9acf8dca695a2279d1d5c393024 Parents: bcff47d Author: Kelven Yang <[email protected]> Authored: Mon Nov 19 17:36:56 2012 -0800 Committer: Kelven Yang <[email protected]> Committed: Mon Nov 19 17:37:13 2012 -0800 ---------------------------------------------------------------------- .../framework/messaging/ComponentContainer.java | 5 ++ .../framework/messaging/ComponentEndpoint.java | 15 ---- .../framework/messaging/MessageSerializer.java | 4 +- .../framework/messaging/RpcCallContext.java | 56 --------------- .../framework/messaging/RpcCallbackListener.java | 24 ++++++ .../framework/messaging/RpcClientCall.java | 19 ++++- .../framework/messaging/RpcEndpoint.java | 1 - .../framework/messaging/RpcProvider.java | 5 +- .../framework/messaging/RpcServerCall.java | 1 - .../framework/messaging/TransportEndpoint.java | 2 + .../messaging/client/ClientTransportEndpoint.java | 6 ++ 11 files changed, 57 insertions(+), 81 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentContainer.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentContainer.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentContainer.java new file mode 100644 index 0000000..1d0f274 --- /dev/null +++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentContainer.java @@ -0,0 +1,5 @@ +package org.apache.cloudstack.framework.messaging; + +public interface ComponentContainer { + ComponentEndpoint wireComponent(ComponentEndpoint endpoint, String predefinedAddress); +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentEndpoint.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentEndpoint.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentEndpoint.java index 442f986..92443e5 100644 --- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentEndpoint.java +++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/ComponentEndpoint.java @@ -45,16 +45,6 @@ public class ComponentEndpoint implements RpcEndpoint, Subscriber { rpcProvider.registerRpcEndpoint(this); } - // it will throw RpcRuntimeException in case of transport - public String call(RpcCallContext callContext, String targetAddress, String command, Object cmdArg) - { - return rpcProvider.call(this, callContext, targetAddress, command, cmdArg); - } - - public RpcClientCall asyncCall(RpcCallContext callContext, String targetAddress, String command, Object cmdArg) { - return rpcProvider.asyncCall(this, callContext, targetAddress, command, cmdArg); - } - @Override public void onCallReceive(RpcServerCall call) { // TODO Auto-generated method stub @@ -62,11 +52,6 @@ public class ComponentEndpoint implements RpcEndpoint, Subscriber { } @Override - public void onCallReturn(RpcClientCall call, Object returnObject, RpcException e) { - // ??? - } - - @Override public void onPublishEvent(String subject, String senderAddress, Object args) { // TODO } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/MessageSerializer.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/MessageSerializer.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/MessageSerializer.java index 3aafd85..d07a3ad 100644 --- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/MessageSerializer.java +++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/MessageSerializer.java @@ -19,6 +19,6 @@ package org.apache.cloudstack.framework.messaging; public interface MessageSerializer { - String serializeTo(Object object); - Object serializeFrom(String message); + <T>String serializeTo(Class<?> clz, T object); + <T> T serializeFrom(String message); } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallContext.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallContext.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallContext.java deleted file mode 100644 index 2d379b3..0000000 --- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallContext.java +++ /dev/null @@ -1,56 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package org.apache.cloudstack.framework.messaging; - -import java.util.HashMap; -import java.util.Map; - -public class RpcCallContext { - private final static int DEFAULT_RPC_TIMEOUT = 10000; - - Map<String, Object> _contextMap = new HashMap<String, Object>(); - int _timeoutMilliSeconds = DEFAULT_RPC_TIMEOUT; - String _pipeline; - - public RpcCallContext() { - } - - public int getTimeoutMilliSeconds() { - return _timeoutMilliSeconds; - } - - public void setTimeoutMilliSeconds(int timeoutMilliseconds) { - _timeoutMilliSeconds = timeoutMilliseconds; - } - - public void setPipeline(String pipeName) { - _pipeline = pipeName; - } - - public String getPipeline() { - return _pipeline; - } - - @SuppressWarnings("unchecked") - public <T> T getContextParameter(String key) { - return (T)_contextMap.get(key); - } - - public void setContextParameter(String key, Object object) { - _contextMap.put(key, object); - } -} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallbackListener.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallbackListener.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallbackListener.java new file mode 100644 index 0000000..729c41d --- /dev/null +++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcCallbackListener.java @@ -0,0 +1,24 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cloudstack.framework.messaging; + +public interface RpcCallbackListener<T> { + void onSuccess(T result); + void onFailure(RpcException e); +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java index 7d9cd8f..5a1e9c4 100644 --- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java +++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcClientCall.java @@ -16,10 +16,23 @@ // under the License. package org.apache.cloudstack.framework.messaging; +import java.util.concurrent.TimeUnit; + public interface RpcClientCall { - String getCommand(); - Object getCommandArgument(); - RpcCallContext getCallContext(); + RpcClientCall setCommand(String cmd); + RpcClientCall setPipeline(String pipeline); + RpcClientCall setTimeout(TimeUnit timeout); + + RpcClientCall setCommandArg(Object arg); + Object getCommandArg(); + + RpcClientCall setContextParam(String key, Object param); + Object getContextParam(String key); + <T> RpcClientCall addCallbackListener(RpcCallbackListener<T> listener); + + void apply(); void cancel(); + + <T> T get(); } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcEndpoint.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcEndpoint.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcEndpoint.java index ff00728..375c1d3 100644 --- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcEndpoint.java +++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcEndpoint.java @@ -20,5 +20,4 @@ package org.apache.cloudstack.framework.messaging; public interface RpcEndpoint { void onCallReceive(RpcServerCall call); - void onCallReturn(RpcClientCall call, Object returnObject, RpcException e); } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcProvider.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcProvider.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcProvider.java index 95217cd..547a81a 100644 --- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcProvider.java +++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcProvider.java @@ -24,7 +24,6 @@ public interface RpcProvider extends TransportMultiplexier { void registerRpcEndpoint(RpcEndpoint rpcEndpoint); void unregisteRpcEndpoint(RpcEndpoint rpcEndpoint); - - String call(RpcEndpoint endpoint, RpcCallContext callContext, String targetAddress, String command, Object cmdArg); - RpcClientCall asyncCall(RpcEndpoint endpoint, RpcCallContext callContext, String targetAddress, String command, Object cmdArg); + + RpcClientCall target(String target); } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java index 7380fb2..b6dd943 100644 --- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java +++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/RpcServerCall.java @@ -21,7 +21,6 @@ package org.apache.cloudstack.framework.messaging; public interface RpcServerCall { String getCommand(); Object getCommandArgument(); - String getRequestTag(); // for receiver to response call void completeCall(Object returnObject); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/TransportEndpoint.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/TransportEndpoint.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/TransportEndpoint.java index 6bca566..91ec86f 100644 --- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/TransportEndpoint.java +++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/TransportEndpoint.java @@ -19,6 +19,8 @@ package org.apache.cloudstack.framework.messaging; public interface TransportEndpoint { + String getEndpointAddress(); + void onAttachConfirm(boolean bSuccess, String endpointAddress); void onDetachIndication(String endpointAddress); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/17f2af40/framework/ipc/src/org/apache/cloudstack/framework/messaging/client/ClientTransportEndpoint.java ---------------------------------------------------------------------- diff --git a/framework/ipc/src/org/apache/cloudstack/framework/messaging/client/ClientTransportEndpoint.java b/framework/ipc/src/org/apache/cloudstack/framework/messaging/client/ClientTransportEndpoint.java index 3c8878f..e12ddcf 100644 --- a/framework/ipc/src/org/apache/cloudstack/framework/messaging/client/ClientTransportEndpoint.java +++ b/framework/ipc/src/org/apache/cloudstack/framework/messaging/client/ClientTransportEndpoint.java @@ -24,6 +24,12 @@ import org.apache.cloudstack.framework.messaging.TransportMultiplexier; public class ClientTransportEndpoint implements TransportEndpoint { @Override + public String getEndpointAddress() { + // ??? + return ""; + } + + @Override public void onAttachConfirm(boolean bSuccess, String endpointAddress) { // TODO Auto-generated method stub }
