package com.mogo.cloud.socket;

import android.content.Context;

import com.mogo.cloud.socket.entity.MsgBody;
import com.zhidao.socket.ConnectionLifecycleListener;


/**
 * socket 长链
 */
public interface IMogoCloudSocketManager {

    /**
     * 初始化
     *
     * @param context 上下文
     */
    void init(Context context, String sn, double lat, double lon);

    /**
     * 重新连接
     */
    void reConnect();

    /**
     * 注册消息监听
     *
     * @param msgType  消息类型
     * @param listener 回调
     */
    void registerOnMessageListener(int msgType, IMogoCloudSocketOnMessageListener listener);

    /**
     * 注销消息监听
     *
     * @param msgType  消息类型
     * @param listener 回调
     */
    void unregisterOnMessageListener(int msgType, IMogoCloudSocketOnMessageListener listener);

    /**
     * @param listener
     */
    void registerSocketConnCallback(ConnectionLifecycleListener listener);

    /**
     * @param listener
     */
    void unregisterSocketConnCallback(ConnectionLifecycleListener listener);

    void registerSocketErrorCallback(String tag,IMogoCloudSocketErrorListener listener);

    void unregisterSocketErrorCallback(String tag);

    /**
     * 发送消息
     *
     * @param body     消息体
     * @param listener 回执监听
     */
    void sendMsg(String appId, int headerType, MsgBody body, IMogoCloudSocketMsgAckListener listener);
}
