mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
modify RPC API flavor to be in Java Future<T> style
This commit is contained in:
parent
bcff47d4b0
commit
17f2af409e
@ -0,0 +1,5 @@
|
|||||||
|
package org.apache.cloudstack.framework.messaging;
|
||||||
|
|
||||||
|
public interface ComponentContainer {
|
||||||
|
ComponentEndpoint wireComponent(ComponentEndpoint endpoint, String predefinedAddress);
|
||||||
|
}
|
||||||
@ -45,27 +45,12 @@ public class ComponentEndpoint implements RpcEndpoint, Subscriber {
|
|||||||
rpcProvider.registerRpcEndpoint(this);
|
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
|
@Override
|
||||||
public void onCallReceive(RpcServerCall call) {
|
public void onCallReceive(RpcServerCall call) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
// implement annotation based call dispatching
|
// implement annotation based call dispatching
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCallReturn(RpcClientCall call, Object returnObject, RpcException e) {
|
|
||||||
// ???
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPublishEvent(String subject, String senderAddress, Object args) {
|
public void onPublishEvent(String subject, String senderAddress, Object args) {
|
||||||
// TODO
|
// TODO
|
||||||
|
|||||||
@ -19,6 +19,6 @@
|
|||||||
package org.apache.cloudstack.framework.messaging;
|
package org.apache.cloudstack.framework.messaging;
|
||||||
|
|
||||||
public interface MessageSerializer {
|
public interface MessageSerializer {
|
||||||
String serializeTo(Object object);
|
<T>String serializeTo(Class<?> clz, T object);
|
||||||
Object serializeFrom(String message);
|
<T> T serializeFrom(String message);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -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);
|
||||||
|
}
|
||||||
@ -16,10 +16,23 @@
|
|||||||
// under the License.
|
// under the License.
|
||||||
package org.apache.cloudstack.framework.messaging;
|
package org.apache.cloudstack.framework.messaging;
|
||||||
|
|
||||||
public interface RpcClientCall {
|
import java.util.concurrent.TimeUnit;
|
||||||
String getCommand();
|
|
||||||
Object getCommandArgument();
|
|
||||||
RpcCallContext getCallContext();
|
|
||||||
|
|
||||||
|
public interface RpcClientCall {
|
||||||
|
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();
|
void cancel();
|
||||||
|
|
||||||
|
<T> T get();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,5 +20,4 @@ package org.apache.cloudstack.framework.messaging;
|
|||||||
|
|
||||||
public interface RpcEndpoint {
|
public interface RpcEndpoint {
|
||||||
void onCallReceive(RpcServerCall call);
|
void onCallReceive(RpcServerCall call);
|
||||||
void onCallReturn(RpcClientCall call, Object returnObject, RpcException e);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,6 +25,5 @@ public interface RpcProvider extends TransportMultiplexier {
|
|||||||
void registerRpcEndpoint(RpcEndpoint rpcEndpoint);
|
void registerRpcEndpoint(RpcEndpoint rpcEndpoint);
|
||||||
void unregisteRpcEndpoint(RpcEndpoint rpcEndpoint);
|
void unregisteRpcEndpoint(RpcEndpoint rpcEndpoint);
|
||||||
|
|
||||||
String call(RpcEndpoint endpoint, RpcCallContext callContext, String targetAddress, String command, Object cmdArg);
|
RpcClientCall target(String target);
|
||||||
RpcClientCall asyncCall(RpcEndpoint endpoint, RpcCallContext callContext, String targetAddress, String command, Object cmdArg);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,6 @@ package org.apache.cloudstack.framework.messaging;
|
|||||||
public interface RpcServerCall {
|
public interface RpcServerCall {
|
||||||
String getCommand();
|
String getCommand();
|
||||||
Object getCommandArgument();
|
Object getCommandArgument();
|
||||||
String getRequestTag();
|
|
||||||
|
|
||||||
// for receiver to response call
|
// for receiver to response call
|
||||||
void completeCall(Object returnObject);
|
void completeCall(Object returnObject);
|
||||||
|
|||||||
@ -19,6 +19,8 @@
|
|||||||
package org.apache.cloudstack.framework.messaging;
|
package org.apache.cloudstack.framework.messaging;
|
||||||
|
|
||||||
public interface TransportEndpoint {
|
public interface TransportEndpoint {
|
||||||
|
String getEndpointAddress();
|
||||||
|
|
||||||
void onAttachConfirm(boolean bSuccess, String endpointAddress);
|
void onAttachConfirm(boolean bSuccess, String endpointAddress);
|
||||||
void onDetachIndication(String endpointAddress);
|
void onDetachIndication(String endpointAddress);
|
||||||
|
|
||||||
|
|||||||
@ -23,6 +23,12 @@ import org.apache.cloudstack.framework.messaging.TransportMultiplexier;
|
|||||||
|
|
||||||
public class ClientTransportEndpoint implements TransportEndpoint {
|
public class ClientTransportEndpoint implements TransportEndpoint {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getEndpointAddress() {
|
||||||
|
// ???
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttachConfirm(boolean bSuccess, String endpointAddress) {
|
public void onAttachConfirm(boolean bSuccess, String endpointAddress) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user