Package org.agilewiki.jactor2.core.readme.blades

Source Code of org.agilewiki.jactor2.core.readme.blades.B

package org.agilewiki.jactor2.core.readme.blades;

import org.agilewiki.jactor2.core.blades.NonBlockingBladeBase;
import org.agilewiki.jactor2.core.impl.Plant;
import org.agilewiki.jactor2.core.requests.AOp;
import org.agilewiki.jactor2.core.requests.AsyncResponseProcessor;
import org.agilewiki.jactor2.core.requests.impl.AsyncRequestImpl;

public class Simple {
    public static void main(final String[] _args) throws Exception {
        new Plant();
        try {
            A a = new A();
            a.startAOp().call();
        } finally {
            Plant.close();
        }
    }
}

class A extends NonBlockingBladeBase {
    final B b;

    public A() throws Exception {
        b = new B();
    }

    AOp<Void> startAOp() {
        return new AOp<Void>("start", getReactor()) {
            @Override
            protected void processAsyncOperation(AsyncRequestImpl _asyncRequestImpl,
                                                 final AsyncResponseProcessor<Void> _asyncResponseProcessor)
                    throws Exception {
                AsyncResponseProcessor<Void> startResponse = new AsyncResponseProcessor<Void>() {
                    @Override
                    public void processAsyncResponse(Void _response) throws Exception {
                        System.out.println("added 1");
                        _asyncResponseProcessor.processAsyncResponse(null);
                    }
                };
                _asyncRequestImpl.send(b.add1AOp(), startResponse);
            }
        };
    }
}

class B extends NonBlockingBladeBase {
    private int count;

    public B() throws Exception {
    }

    AOp<Void> add1AOp() {
        return new AOp<Void>("add1", getReactor()) {
            @Override
            protected void processAsyncOperation(AsyncRequestImpl _asyncRequestImpl,
                                                 AsyncResponseProcessor<Void> _asyncResponseProcessor)
                    throws Exception {
                count += 1;
                _asyncResponseProcessor.processAsyncResponse(null);
            }
        };
    }
}
TOP

Related Classes of org.agilewiki.jactor2.core.readme.blades.B

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.