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

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

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;

interface BBB {
    AOp<Void> add1AOp();
}

class BImpl extends NonBlockingBladeBase implements BBB {
    int count;

    public BImpl() throws Exception {
    }

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

class AAA extends NonBlockingBladeBase {
    public AAA() throws Exception {
    }

    public AOp<Void> startAOp(final BBB _b) {
        return new AOp<Void>("start", getReactor()) {
            @Override
            protected void processAsyncOperation(final AsyncRequestImpl _asyncRequestImpl,
                                              final AsyncResponseProcessor<Void> _asyncResponseProcessor)
                    throws Exception {

                AsyncResponseProcessor<Void> startResponse = new AsyncResponseProcessor<Void>() {
                    @Override
                    public void processAsyncResponse(final Void _response) throws Exception {
                        System.out.println("added 1");
                        _asyncResponseProcessor.processAsyncResponse(null);
                    }
                };

                _asyncRequestImpl.send(_b.add1AOp(), startResponse);
            }
        };
    }
}

public class Decoupled {
    public static void main(final String[] _args) throws Exception {
        new Plant();
        try {
            final AAA a = new AAA();
            final BBB b = new BImpl();
            a.startAOp(b).call();
        } finally {
            Plant.close();
        }
    }
}
TOP

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

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.