当前位置: 首页>>代码示例>>Java>>正文


Java Promise.onResolve方法代码示例

本文整理汇总了Java中org.osgi.util.promise.Promise.onResolve方法的典型用法代码示例。如果您正苦于以下问题:Java Promise.onResolve方法的具体用法?Java Promise.onResolve怎么用?Java Promise.onResolve使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.osgi.util.promise.Promise的用法示例。


在下文中一共展示了Promise.onResolve方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: doService

import org.osgi.util.promise.Promise; //导入方法依赖的package包/类
@SuppressWarnings("unchecked")
protected void doService(SerializationStrategy serializationStrategy, ClassLoader loader, Method method, Object target, DataByteArrayInputStream requestStream, final DataByteArrayOutputStream responseStream, final Runnable onComplete) {

    final AsyncServiceResponse helper = new AsyncServiceResponse(loader, method, responseStream, onComplete, serializationStrategy);
    try {
        Class<?>[] types = method.getParameterTypes();
        final Object[] args = new Object[types.length];
        serializationStrategy.decodeRequest(loader, types, requestStream, args);
        final Promise<Object> promise = (Promise<Object>)method.invoke(target, args);
        promise.onResolve(() -> {
            try{
                helper.send(promise.getFailure(), promise.getFailure()==null ? promise.getValue() : null);
            }
            catch (Exception e){
                helper.send(e, null);
            }
        });

    } catch (Throwable t) {
        helper.send(t, null);
    }
}
 
开发者ID:apache,项目名称:aries-rsa,代码行数:23,代码来源:AsyncPromiseInvocationStrategy.java

示例2: onCall

import org.osgi.util.promise.Promise; //导入方法依赖的package包/类
@Override
public <T, E extends Throwable> T onCall(CallContext callContext, InterceptionHandler<T> handler) throws E {
    Stopwatch started = Stopwatch.createStarted();
    String methodName = callContext.target.getName() + "::" + callContext.method.getName();

    boolean async = (callContext.method.getReturnType() == Promise.class);

    try {
        T result = handler.invoke();
        if (async) {
            Promise<?> p = (Promise<?>) result;
            p.onResolve(() -> System.out
                    .println("Async call to " + methodName + " took " + started.elapsed(TimeUnit.MICROSECONDS)
                            + " µs"));
        }
        return result;
    } finally {
        System.out.println(
                "Sync call to " + methodName + " took " + started.elapsed(TimeUnit.MICROSECONDS) + " µs");
    }
}
 
开发者ID:primeval-io,项目名称:aspecio,代码行数:22,代码来源:AllMetricInterceptorImpl.java

示例3: onCall

import org.osgi.util.promise.Promise; //导入方法依赖的package包/类
@Override
public <T, E extends Throwable> T onCall(Timed annotation, CallContext callContext,
        InterceptionHandler<T> handler) {

    Stopwatch started = Stopwatch.createStarted();
    String methodName = callContext.target.getName() + "::" + callContext.method.getName();

    boolean async = (callContext.method.getReturnType() == Promise.class);

    try {
        T result = handler.invoke();
        if (async) {
            Promise<?> p = (Promise<?>) result;
            p.onResolve(() -> System.out
                    .println("Async call to " + methodName + " took " + started.elapsed(TimeUnit.MICROSECONDS)
                            + " µs"));
        }
        return result;
    } finally {
        System.out.println(
                "Sync call to " + methodName + " took " + started.elapsed(TimeUnit.MICROSECONDS) + " µs");
    }
}
 
开发者ID:primeval-io,项目名称:aspecio,代码行数:24,代码来源:AnnotatedMetricInterceptorImpl.java

示例4: getLongResult

import org.osgi.util.promise.Promise; //导入方法依赖的package包/类
@Override
public Promise<Long> getLongResult() {
    Deferred<Long> d = new Deferred<>();

    Promise<Long> promise = superSlowService.compute();
    promise.onResolve(() -> {
        new Thread(new Runnable() {

            @Override
            public void run() {
                d.resolveWith(promise);
            }
        }).start();
    });
    Promise<Long> promise2 = d.getPromise();

    return promise2;
}
 
开发者ID:primeval-io,项目名称:aspecio,代码行数:19,代码来源:DemoConsumerImpl.java


注:本文中的org.osgi.util.promise.Promise.onResolve方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。