package com.iailab.netsdk.lib.callback; import com.iailab.netsdk.lib.NetSDKLib; import com.iailab.netsdk.lib.ToolKits; import com.iailab.netsdk.lib.structure.NET_CB_REDIRECT_SERVER_CALLBACK_INFO; import com.iailab.netsdk.lib.structure.NET_IN_START_REDIRECT_SERVICE; import com.sun.jna.Callback; import com.sun.jna.Pointer; /** * @author 47081 * @version 1.0 * @description é‡å®šå‘æœåŠ¡å™¨å›žè°ƒå‡½æ•°åŽŸå½¢æ‰©å±• * @date 2021/3/13 */ public interface fRedirectServerCallBackEx extends Callback { /** * @param lDevHandle 设备å¥æŸ„ * @param pInParam 设备信æ¯,对应结构体{@link NET_CB_REDIRECT_SERVER_CALLBACK_INFO} * @param dwUserData 自定义数æ®,该自定义数æ®ä¸º{@link * NET_IN_START_REDIRECT_SERVICE#dwUserData}ä¼ å…¥çš„æ•°æ®,注æ„ä¿è¯dwUserä¸ä¼šè¢«jvm回收, * å¦åˆ™å›žè°ƒä¸æŽ¥æ”¶åˆ°çš„dwUserå¯èƒ½ä¹±ç ,甚至导致程åºå´©æºƒ * @return */ default int callback(NetSDKLib.LLong lDevHandle, Pointer pInParam, Pointer dwUserData) { NET_CB_REDIRECT_SERVER_CALLBACK_INFO info = new NET_CB_REDIRECT_SERVER_CALLBACK_INFO(); ToolKits.GetPointerDataToStruct(pInParam, 0, info); dealWithData(lDevHandle.longValue(), info, dwUserData); return 0; } /** * æ•°æ®å¤„ç† * * @param devHandler 设备å¥æŸ„ * @param info 主动注册é‡å®šå‘è®¾å¤‡ä¿¡æ¯ * @param userData ç”¨æˆ·æ•°æ® */ void dealWithData(long devHandler, NET_CB_REDIRECT_SERVER_CALLBACK_INFO info, Pointer userData); }