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
}