You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2012/11/20 02:37:23 UTC

git commit: modify RPC API flavor to be in Java Future style

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 <ke...@gmail.com>
Authored: Mon Nov 19 17:36:56 2012 -0800
Committer: Kelven Yang <ke...@gmail.com>
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
 	}