package net.northking.cctp.se.debug.service;


import net.northking.cctp.se.debug.bean.DebuggerRequest;
import net.northking.cctp.se.debug.bean.DebuggerResponse;

import javax.websocket.Session;
import java.util.concurrent.Future;
import java.util.concurrent.locks.Lock;

public interface DebugSession extends Runnable {
    /**
     * 获取session type
     */
    String getSessionType();
    /**
     * 获取sessionId
     * @return
     */
    String getSessionId();
    /**
     * 获取设备token
     * @return
     */
    String getDeviceToken();

    /**
     * 获取设备id
     * @return
     */
    String getDeviceId();

    /**
     * 处理请求指令
     * @param request
     */
    void processRequest(DebuggerRequest request);
    /**
     * 发送响应
     * @param response
     */
    void sendResponse(DebuggerResponse response);

    /**
     * 停止当前指令
     */
    void stop(DebuggerRequest request);

    /**
     * 销毁会话
     */
    void destroy();

    /**
     * 当前任务
     * @param future
     */
    void setFuture(Future<?> future);

    /**
     * 断开重新连接
     * @param deviceToken
     * @param session
     */
    void refresh(String deviceToken, Session session);

    Lock getLock();
}
