package netmanager.lib.netmanager;

import com.sun.jna.Pointer;

import netmanager.lib.LLONG;
import netmanager.lib.LONG;

import com.sun.jna.Callback;
import com.sun.jna.NativeLong;

// 回调集合
public class NetDelegates {
    // 异步注册设备回调函数原形
    public interface fHaveLoginCallBack extends Callback {
        public void invoke(
                NativeLong lLoginID,
                String lpszIP,
                int nPort,
                int bOnline,
                Pointer pstuDeviceInfo,    // STU_DEVICE_INFO*
                int nError,
                NativeLong dwUser,
                Pointer reserved);
    }

    // 网络连接断开回调函数原形
    public interface fDisConnectCallBack extends Callback {
        public void invoke(NativeLong loginID, String ip, int port, NativeLong userdata);
    }

    // 动态子连接断开回调函数原形
    public interface fSubDisConnectCallBack extends Callback {
        public void invoke(
                int emInterfaceType,            // EM_VIRTUAL_INTERFACE_TYPE
                int bOnline,
                NativeLong operateHandle,
                NativeLong loginID,
                NativeLong userdata);
    }

    // 网络连接重连结果回调函数原形
    public interface fDevReconnectCallBack extends Callback {
        public void invoke(
                NativeLong lLoginID,
                Pointer pstReconnResult,            // STU_RECONNECT_RESULT_PARAM*
                NativeLong dwUser);
    }

    // 视频监视断开回调函数原形
    public interface fRealPlayDisConnectCallBack extends Callback {
        public void invoke(
                NativeLong operateHandle,
                int emCodeType,                        // EM_CODE_RETURN_TYPE
                Pointer ptrParam,
                NativeLong userdata);
    }

    // 实时监视数据回调函数原形
    public interface fRealPlayDataCallBack extends Callback {
        public void invoke(
                NativeLong realHandle,
                int dataType,
                Pointer ptrBuffer,
                int bufferSize,
                NativeLong userdata);
    }

    // 实时监视数据回调函数原形
    public interface fRealPlayDataCallBackEx extends Callback {
        public void invoke(
                NativeLong realHandle,
                int dataType,
                Pointer ptrBuffer,
                int bufferSize,
                int param,
                NativeLong userdata);
    }

    // 语音对讲数据回调函数原形
    public interface fTalkBackDataCallBack extends Callback {
        public void invoke(
                NativeLong realHandle,
                Pointer ptrBuffer,
                int bufferSize,
                NativeLong userdata);
    }

    // 报警信息回调函数原形
    public interface fAlarmInfoCallBack extends Callback {
        public void invoke(
                NativeLong alarmHandle,
                int alarmEvent,
                Pointer ptrBuffer,
                int bufferSize,
                NativeLong userdata);
    }

    // 屏幕叠加回调函数原形
    public interface fCustomDrawCallBack extends Callback {
        public void invoke(
                NativeLong loginID,
                NativeLong playHandle,
                Pointer hDC,
                NativeLong userdata);
    }

    // 消息回调函数原形
    public interface fMsgCallBack extends Callback {
        public void invoke(
                int command,
                NativeLong loginID,
                Pointer ptrBuffer,
                int bufferSize,
                String ip,
                int port,
                NativeLong userdata);
    }

    // 侦听服务器回调函数原形
    public interface fRegServerCallBack extends Callback {
        public void invoke(
                NativeLong handle,
                String ip,
                int port,
                int command,
                Pointer ptrParam,
                int paramLen,
                NativeLong userdata);
    }

    // 语音对讲的音频数据回调函数原形
    public interface fAudioDataCallBack extends Callback {
        public void invoke(
                NativeLong talkHandle,
                Pointer ptrBuffer,
                int bufferSize,
                byte audioFlag,
                NativeLong userdata);
    }

    // 升级设备程序回调函数原形
    public interface fDeviceUpgradeCallBack extends Callback {
        public void invoke(
                NativeLong loginID,
                NativeLong upgradeHandle,
                int totalSize,
                int sendSize,
                NativeLong userdata);
    }

    // 透明串口回调函数原形
    public interface fTransComDataCallBack extends Callback {
        public void invoke(
                NativeLong lLoginID,
                NativeLong lTransComHandle,
                int nTranscomPort,
                Pointer pBuffer,
                LONG dwBufSize,
                NativeLong dwUser);
    }

    // 异步数据回调
    public interface fAsyncDataCallBack extends Callback {
        public void invoke(
                NativeLong lCommand,
                Pointer lpData,
                NativeLong dwUser);
    }

    // 文件传输回调
    public interface fFileTransCallBack extends Callback {
        public void invoke(
                NativeLong lHandle,
                int nTransType,
                int nState,
                int nSendSize,
                int nTotalSize,
                NativeLong dwUser);
    }

    // 智能分析数据回调
    public interface fAnalyzeDataCallBack extends Callback {
        public void invoke(
                NativeLong analyzeHandle,
                int eventType,
                Pointer ptrEventInfo,
                Pointer ptrBuffer,
                int bufferSize,
                NativeLong userdata,
                int sequence,
                Pointer ptrReserved);
    }

    // 异步搜索设备回调
    public interface fSearchDevicesCallBack extends Callback {
        public void invoke(
                Pointer ptrSearchInfo,
                Pointer ptrUserdata);
    }

    // 人脸建模信息回调
    public interface fFaceFeatureExtInfoCallBack extends Callback {
        public void invoke(
                NativeLong handle,
                int optType,
                Pointer ptrBuffer,
                int bufferSize,
                NativeLong userdata);
    }

    // 人脸删除信息回调
    public interface fFaceDeleteInfoCallBack extends Callback {
        public void invoke(
                NativeLong lHandle,
                Pointer pstInfo,
                LONG dwInfoSize,
                NativeLong dwUser);
    }

    // 人脸建模信息回调
    public interface fCfgModifyInfoCallBack extends Callback {
        public void invoke(
                NativeLong handle,
                final String tableName,
                String strBuffer,
                int bufferSize,
                NativeLong userdata);
    }

    // 人脸抓拍相机特殊数据类型  lCommand 固定为  0x0001
    public interface fNetPicStreamCallBackCV1 extends Callback {
        public void invoke(
                NativeLong lRevcID,
                int lCommand,
                Pointer ptrBuffer,
                int bufferSize,
                NativeLong userdata);
    }

    // 多文件下载进度回调函数原型
    public interface fMultiFileDownLoadPosCallBack extends Callback {
        public void invoke(
                NativeLong lDownLoadHandle,
                LONG dwFileID,
                LONG dwFileTotalSize,
                LONG dwDownLoadSize,
                int nError,
                LLONG dwUser,
                Pointer pReserved);
    }

    // 按时间多文件下载进度回调函数原型
    public interface fMultiFileDownLoadByTimePosCallBack extends Callback {
        public void invoke(
                NativeLong lDownLoadHandle,
                LONG dwFileTotalCount,
                LONG dwFileID,
                LONG dwFileTotalSize,
                LONG dwDownLoadSize,
                int nError,
                LLONG dwUser,
                Pointer pReserved);
    }

    // 多文件下载进度回调函数原型Ex
    public interface fMultiFileDownLoadPosCallBackEx extends Callback {
        public void invoke(
                NativeLong lDownLoadHandle,
                Pointer lpstCurFileInfo,        // STU_MULTI_DOWNLOAD_PROC_FILE_INFO*
                int nError,
                LLONG dwUser,
                Pointer pReserved);
    }

    // 按时间多文件下载进度回调函数原型Ex
    public interface fMultiFileDownLoadByTimePosCallBackEx extends Callback {
        public void invoke(
                NativeLong lDownLoadHandle,
                LONG dwFileTotalCount,
                Pointer lpstCurFileInfo,        // STU_MULTI_DOWNLOAD_PROC_FILE_INFO*
                int nError,
                LLONG dwUser,
                Pointer pReserved);
    }

    // 文件下载进度回调函数原型
    public interface fFileDownloadPosCallBack extends Callback {
        public void invoke(
                String szFileName,
                int dwFileTotalSize,
                int dwDownLoadSize,
                Pointer pData,                // void*
                int nDataLen,
                int nError,
                LLONG dwUser,
                Pointer pReserved);            // void*
    }

    // 文件上传进度回调函数原型
    public interface fFileUploadPosCallBack extends Callback {
        public void invoke(
                String szFileName,
                int dwFileTotalSize,
                int dwUpLoadSize,
                int nError,
                LLONG dwUser,
                Pointer pReserved);            // void*
    }

    // 文件信息获取进度回调函数原型
    public interface fGetFileListCallBack extends Callback {
        public void invoke(
                String szPath,
                Pointer pFileInfoArray,        // STU_FILE_INFO*
                int nCount,
                LLONG dwUser);                // void*
    }

    // 回放/下载进度回调函数原形
    public interface fLoadPosCallBack extends Callback {
        public void invoke(
                NativeLong lHandle,
                LONG dwTotalSize,
                LONG dwDownLoadSize,
                NativeLong dwUser);
    }

    // 回放/下载进度回调函数原形Ex
    public interface fLoadPosCallBackEx extends Callback {
        public void invoke(
                NativeLong lHandle,
                Pointer lpstPosInfo,            // STU_PLAY_BACK_POS_INFO*
                NativeLong dwUser);
    }

    // 回放数据回调函数原形
    public interface fPlaybackDataCallBack extends Callback {
        public void invoke(
                NativeLong lPlaybackHandle,
                LONG dwDataType,
                Pointer pBuffer,
                LONG dwBufSize,
                NativeLong dwUser);
    }

    //二维码信息订阅回调
    public interface fQRCodeInfoCallBack extends Callback {
        public void invoke(
                NativeLong lHandle,
                int nChannel,
                final String strQRCode,
                Pointer pReserved,
                NativeLong dwUser);
    }

    // 二维码信息订阅回调
    public interface fLdmSearchDeviceCallBack extends Callback {
        public void invoke(
                NativeLong lLoginID,
                Pointer pDevice,        // STU_LDM_DEVICE*
                Pointer pUser);            // void*
    }

    // LDM设备状态信息订阅回调
    public interface fLdmDeviceStateInfoCallBack extends Callback {
        public void invoke(
                NativeLong lHandle,
                int nUniChannel,
                Pointer pInfo,            // STU_LDM_DEVICE_STATE_INFO*
                int nReservedType,
                Pointer pReserved,        // void*
                Pointer pUser);            // void*
    }

    // 实时音频数据回调函数
    public interface fRealAudioDataCallBack extends Callback {
        public void invoke(
                NativeLong lAudioHandle,
                Pointer pBuffer,
                int dwBufSize,
                NativeLong dwUser);
    }

    // 设备上行带宽测试结果回调函数
    public interface fDevBandwidthTestCallBack extends Callback {
        public void invoke(
                NativeLong lTestHandle,
                int bFinish,
                Pointer pstResult,        // STU_BANDWIDTH_TEST_RESULT*
                NativeLong dwUser,
                Pointer pReserved);        // void*
    }

    // 门禁批量添加图片进度回调
    public interface fDoorMultiAddCallBack extends Callback {
        public void invoke(
                NativeLong lLoginID,
                int nChannel,
                Pointer pstResult,        // STU_DOOR_CFG_PERSON_MULTI_ADD_RESULT*
                NativeLong dwUser);
    }

    // 获取人脸建模结果详情回调
    public interface fGetExtractFeatureDetailCallBack extends Callback {
        public void invoke(
                NativeLong lLoginID,
                Pointer pstResult,        // STU_FACE_EXTRACT_FEATURE_DETAILS*
                NativeLong dwUser);
    }

    // 日志查询数据回调
    public interface fLogSearchResultCallBack extends Callback {
        public void invoke(
                NativeLong lLoginID,
                int emType,            // EM_LOG_SEARCH_TYPE
                Pointer pParam,        // void*
                int nCount,
                int nTotal,
                NativeLong dwUser);
    }

    // 智能分析数据回调
    public interface fAnalyzeDataByPairCallBack extends Callback {
        public void invoke(
                NativeLong lAnalyzeHandle,
                int dwEventType,                // EM_EVENT_SP_TYPE
                Pointer pstpstLoadDataPair,    // STU_LOAD_DATA_PAIR_INFO*
                NativeLong dwUser,
                Pointer pReserved);
    }
}
