// Path: src/main/java/com/ystruct.middleware/stormmq/model/InvokeFuture.java
// public class InvokeFuture<T> {
//     private Semaphore semaphore = new Semaphore(0);
//     private T result;
//     private List<InvokeListener<T>> listeners = new ArrayList<InvokeListener<T>>();
//     private String requestId;
//     private Throwable cause;
//     public void setCause(Throwable cause){
//         this.cause = cause;
//         notifyListeners();
//         semaphore.release(Integer.MAX_VALUE - semaphore.availablePermits());
// 
//     }
//     public String getRequestId() {
//         return requestId;
//     }
// 
//     public void setRequestId(String requestId) {
//         this.requestId = requestId;
//     }
//     public InvokeFuture() {
//     }
// 
//     public void setResult(T result) {
//         this.result=result;
//         notifyListeners();
//         semaphore.release(Integer.MAX_VALUE - semaphore.availablePermits());
//     }
//     public Object getResult(long timeout,TimeUnit unit){
//         try {
//             if(!semaphore.tryAcquire(timeout,unit)){
//                 throw new RuntimeException("time out");
//             }
//         }catch (InterruptedException e){
//             throw new RuntimeException();
//         }
//         if(cause != null)
//             return null;
//         return result;
//     }
//     public void addInvokerListener(InvokeListener<T> listener){
//         this.listeners.add(listener);
//     }
//     private void notifyListeners(){
//         for(InvokeListener<T> listener : listeners){
//             listener.onResponse(result);
//         }
//     }
// }
// 
// Path: src/main/java/com/ystruct.middleware/stormmq/model/StormRequest.java
// public class StormRequest implements Serializable {
//     //一次请求的id
//     private String requestId;
//     //请求的参数
//     private Object parameters;
//     //消息是从哪里来的
//     private RequestResponseFromType fromType;
//     //请求的类型
//     private RequestType requestType;
// 
//     public RequestType getRequestType() {
//         return requestType;
//     }
//     public void setRequestType(RequestType requestType) {
//         this.requestType = requestType;
//     }
//     public RequestResponseFromType getFromType() {
//         return fromType;
//     }
//     public void setFromType(RequestResponseFromType fromType) {
//         this.fromType = fromType;
//     }
//     public String getRequestId() {
//         return requestId;
//     }
//     public void setRequestId(String requestId) {
//         this.requestId = requestId;
//     }
//     public Object getParameters() {
//         return parameters;
//     }
//     public void setParameters(Object parameters) {
//         this.parameters = parameters;
//     }
// }


import io.netty.channel.ChannelInboundHandlerAdapter;
import model.InvokeFuture;
import model.StormRequest;
package consumer.netty;


/**
 * Created by yang on 16-11-24.
 */
public interface StormConsumerConnection {
    void init();
    void connect();
    void connect(String host,int port);
    void sethandle(ChannelInboundHandlerAdapter hanler);
    Object Send(StormRequest request);
// Path: src/main/java/com/ystruct.middleware/stormmq/model/InvokeFuture.java
// public class InvokeFuture<T> {
//     private Semaphore semaphore = new Semaphore(0);
//     private T result;
//     private List<InvokeListener<T>> listeners = new ArrayList<InvokeListener<T>>();
//     private String requestId;
//     private Throwable cause;
//     public void setCause(Throwable cause){
//         this.cause = cause;
//         notifyListeners();
//         semaphore.release(Integer.MAX_VALUE - semaphore.availablePermits());
// 
//     }
//     public String getRequestId() {
//         return requestId;
//     }
// 
//     public void setRequestId(String requestId) {
//         this.requestId = requestId;
//     }
//     public InvokeFuture() {
//     }
// 
//     public void setResult(T result) {
//         this.result=result;
//         notifyListeners();
//         semaphore.release(Integer.MAX_VALUE - semaphore.availablePermits());
//     }
//     public Object getResult(long timeout,TimeUnit unit){
//         try {
//             if(!semaphore.tryAcquire(timeout,unit)){
//                 throw new RuntimeException("time out");
//             }
//         }catch (InterruptedException e){
//             throw new RuntimeException();
//         }
//         if(cause != null)
//             return null;
//         return result;
//     }
//     public void addInvokerListener(InvokeListener<T> listener){
//         this.listeners.add(listener);
//     }
//     private void notifyListeners(){
//         for(InvokeListener<T> listener : listeners){
//             listener.onResponse(result);
//         }
//     }
// }
// 
// Path: src/main/java/com/ystruct.middleware/stormmq/model/StormRequest.java
// public class StormRequest implements Serializable {
//     //一次请求的id
//     private String requestId;
//     //请求的参数
//     private Object parameters;
//     //消息是从哪里来的
//     private RequestResponseFromType fromType;
//     //请求的类型
//     private RequestType requestType;
// 
//     public RequestType getRequestType() {
//         return requestType;
//     }
//     public void setRequestType(RequestType requestType) {
//         this.requestType = requestType;
//     }
//     public RequestResponseFromType getFromType() {
//         return fromType;
//     }
//     public void setFromType(RequestResponseFromType fromType) {
//         this.fromType = fromType;
//     }
//     public String getRequestId() {
//         return requestId;
//     }
//     public void setRequestId(String requestId) {
//         this.requestId = requestId;
//     }
//     public Object getParameters() {
//         return parameters;
//     }
//     public void setParameters(Object parameters) {
//         this.parameters = parameters;
//     }
// }


// Path: src/main/java/com/ystruct.middleware/stormmq/consumer/netty/StormConsumerConnection.java
import io.netty.channel.ChannelInboundHandlerAdapter;
import model.InvokeFuture;
import model.StormRequest;

package consumer.netty;


/**
 * Created by yang on 16-11-24.
 */
public interface StormConsumerConnection {
    void init();
    void connect();
    void connect(String host,int port);
    void sethandle(ChannelInboundHandlerAdapter hanler);
    Object Send(StormRequest request);
    void SendSync(StormRequest request);