// Path: erp-library/src/main/java/com.jukusoft/erp/lib/module/IModule.java
// public interface IModule {
// 
//     /**
//      * get a reference to the Vert.x instance that deployed this verticle
//      *
//      * @return reference to the Vert.x instance
//      */
//     public Vertx getVertx ();
// 
//     /**
//     * get instance of logger
//     */
//     public ILogging getLogger ();
// 
//     /**
//     * get instance of event bus
//      *
//      * @return instance of event bus
//     */
//     public EventBus getEventBus ();
// 
//     /**
//     * initialize module
//     */
//     public void init (Vertx vertx, AppContext context, ILogging logger);
// 
//     /**
//     * start module
//     */
//     public void start (Handler<Future<IModule>> handler) throws Exception;
// 
//     /**
//     * stop module
//     */
//     public void stop (Handler<Future<Void>> handler) throws Exception;
// 
// }


import com.jukusoft.erp.lib.module.IModule;
package com.jukusoft.erp.app.server;


public interface AppServer {

    /**
    * start microservice application server
    */
    public void start (AppStartListener listener);

    /**
    * set number of threads for event loop pool
     *
     * @param nOfThreads number of threads for event loop pool
    */
    public void setEventLoopPoolSize (int nOfThreads);

    /**
     * set number of threads for worker pool
     *
     * @param nOfThreads number of threads for worker pool
     */
    public void setWorkerPoolSize (int nOfThreads);

    /**
    * add and start module
     *
     * @param module instance of module
     * @param cls class name of module
    */
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/module/IModule.java
// public interface IModule {
// 
//     /**
//      * get a reference to the Vert.x instance that deployed this verticle
//      *
//      * @return reference to the Vert.x instance
//      */
//     public Vertx getVertx ();
// 
//     /**
//     * get instance of logger
//     */
//     public ILogging getLogger ();
// 
//     /**
//     * get instance of event bus
//      *
//      * @return instance of event bus
//     */
//     public EventBus getEventBus ();
// 
//     /**
//     * initialize module
//     */
//     public void init (Vertx vertx, AppContext context, ILogging logger);
// 
//     /**
//     * start module
//     */
//     public void start (Handler<Future<IModule>> handler) throws Exception;
// 
//     /**
//     * stop module
//     */
//     public void stop (Handler<Future<Void>> handler) throws Exception;
// 
// }


// Path: app-server/src/main/java/com/jukusoft/erp/app/server/AppServer.java
import com.jukusoft.erp.lib.module.IModule;

package com.jukusoft.erp.app.server;


public interface AppServer {

    /**
    * start microservice application server
    */
    public void start (AppStartListener listener);

    /**
    * set number of threads for event loop pool
     *
     * @param nOfThreads number of threads for event loop pool
    */
    public void setEventLoopPoolSize (int nOfThreads);

    /**
     * set number of threads for worker pool
     *
     * @param nOfThreads number of threads for worker pool
     */
    public void setWorkerPoolSize (int nOfThreads);

    /**
    * add and start module
     *
     * @param module instance of module
     * @param cls class name of module
    */
    public <T extends IModule> void deployModule (T module, Class<T> cls);