Windows 处理通讯相关的服务类

class IUserAgentProxy
{
 
    /**
     * 设置信令服务器连接处理的回调
     * @param connectListener 回调处理实现类
     */
    virtual int RegisterConnectListener(IConnectListener *connectListener) = 0;
 
    /**
     * 设置文本消息通讯处理的回调
     * @param messageListener 回调处理实现类
     */
    virtual int RegisterMessageListener(IMessageListener *messageListener) = 0;
 
    /**
     * 设置通话信令处理的回调
     * @param callListener 回调处理实现类
     */
    virtual int RegisterCallListener(ICallListener *callListener) = 0;
 
    /**
     * 设置媒体流处理的回调
     * @param mediaListener 回调处理实现类
     */
    virtual int RegisterMediaListener(IMediaListener *mediaListener) = 0;
 
    /**
     * 取消信令服务器连接处理的回调
     * @param connectListener 回调处理实现类
     */
    virtual int UnRegisterConnectListener(IConnectListener *connectListener) = 0;
 
    /**
     * 取消文本消息通讯处理的回调
     * @param messageListener 回调处理实现类
     */
    virtual int UnRegisterMessageListener(IMessageListener *messageListener) = 0;
 
    /**
     * 取消通话信令处理的回调
     * @param callListener 回调处理实现类
     */
    virtual int UnRegisterCallListener(ICallListener *callListener) = 0;
 
    /**
     * 取消媒体流处理的回调
     * @param mediaListener 回调处理实现类
     */
    virtual int UnRegisterMediaListener(IMediaListener *mediaListener) = 0;
 
    /**
     * 登录消息处理服务器
     * @param userID 用户ID
     * @param sessionID 用户的 sessionID
     * @param hostname 登录服务器信息, 通过服务端接口 /api/server/addr 获取, 内容为json数据格式
     * @param language 指定手机端语言类型, 服务端推送等相关信息将会使用此语言类型
     * @param timeZone 设置当前时区
     * @param regionCode 登录服务器的区号, 中国区 0086, 其他区 0001
     * @return 0 表示调用成功
     */
     virtual int LoginToTCPServer(const char *userid, const char *sessionid, const char *hostname,
                                 const char *language, const char *timeZone, const char *regionCode) = 0;
 
    /**
     * 从消息服务器登出
     * @return 0 表示调用成功
     */
    virtual int LogoutFromTcpServer() = 0;
}

IVoipService说明

    /**
     * 获取媒体流的网络状况和传输状况信息
     * @param ms 参数信息结构体
     */
virtual void getMediaStatistic(mediaStatistic *ms) = 0;

IConnectListener 说明

class IConnectListener {
 
    /**
     * 消息服务连接开始回调
     * @param status 总是 0
     * @param msg 连接发起失败的信息
     */
    virtual void MessageServerConnectStart(int status, char *msg) = 0;
 
    /**
     * 消息服务连接成功回调
     * @param status 总是 0
     * @param msg 连接成功的信息
     */
    virtual void MessageServerConnectSuccess(int status, char *msg) = 0;
 
    /**
     * 消息服务器连接错误回调
     * @param status 总是 0
     * @param msg 连接错误的信息
     */
    virtual void MessageServerConnectError(int status, char *msg) = 0;
 
    /**
     * 消息服务器开始断开连接回调
     * @param status 总是 0
     * @param msg 断开连接错误的信息
     */
    virtual void MessageServerDisconnectStart(int status, char *msg) = 0;
 
    /**
     * 消息服务器断开连接成功回调
     * @param status 总是 0
     * @param msg 断开连接成功的信息
     */
    virtual void MessageServerDisconnectSuccess(int status, char *msg) = 0;
 
    /**
     * 消息服务器断开连接错误回调
     * @param status 总是 0
     * @param msg 断开连接错误的信息
     */
    virtual void MessageServerDisconnectError(int status, char *msg) = 0;
 
    /**
     * 消息服务器连接超时回调
     * @param status 总是 0
     * @param msg 超时的信息
     */
    virtual void MessageServerConnectTimeout(int status, char *msg) = 0;
 
    /**
     * 开始登录消息服务器时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void MessageServerLoginStart(int status, char *msg) = 0;
 
    /**
     * 登录消息服务器成功时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void MessageServerLoginSuccess(int status, char *msg) = 0;
 
    /**
     * 登录消息服务器错误时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void MessageServerLoginError(int status, char *msg) = 0;
 
    /**
     * 被服务器踢下线时回调, 当此帐号在其他设备登录时发生
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void MessageServerKickoff(int status, char *msg) = 0;
 
    /**
     * 流媒体服务器连接成功时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void UdpServerConnectSuccess(int status, char *msg) = 0;
 
    /**
     * 流媒体服务器连接错误时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void UdpServerConnectError(int status, char *msg) = 0;
 
    /**
     * 流媒体服务器断开成功时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void UdpServerDisconnectSuccess(int status, char *msg) = 0;
 
    /**
     * 流媒体服务器断开错误时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void UdpServerDisconnectError(int status, char *msg) = 0;
 
    /**
     * 消息服务器发送心跳时回调, 应用在前台时一分钟发一次,在后台时10分钟发一次
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void TcpServerHeartbeating(int status, char *msg) = 0;
 
    /**
     * 收到消息服务器的心跳响应时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void TcpServerHeartbeatSuccess(int status, char *msg) = 0;
 
    /**
     * 在超时时间内没有收到消息服务器的心跳响应时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void TcpServerHeartbeatError(int status, char *msg) = 0;
 
    /**
     * P2P 连接成功时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void P2pConnectSuccess(int status, char *msg) = 0;
 
    /**
     * P2P 连接错误时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void P2pConnectError(int status, char *msg) = 0;
 
    /**
     * P2P 连接断开时回调
     * @param status 总是 0
     * @param msg 信息
     */
    virtual void P2pDisconnectSuccess(int status, char *msg) = 0;
}

ICallListener 说明

class ICallListener {
    /**
     * 收到视频呼叫时回调
     * @param status 总是 0
     * @param peerName 呼叫方的用户ID
     * @param roomid 会话的唯一标识符
     * @param extraData 呼叫方携带的扩展数据
     * @param len extraData的长度
     */
    virtual void VideoIncoming(int status, char *peerName, char *roomid, char *extraData, int len) = 0;
 
    /**
     * 收到语音呼叫时回调
     * @param peerName 呼叫方的用户ID
     * @param roomid 会话的唯一标识符
     * @param extraData 呼叫方携带的扩展数据
     * @param len extraData的长度
     */
    virtual void AudioIncoming(int status, char *peerName, char *roomid, char *extraData, int len) = 0;
 
    /**
     * 对方挂断通话时回调
     * @param status 总是 0
     * @param peerName 对方的用户ID
     */
    virtual void Hangup(int status, char *peerName) = 0;
 
    /**
     * 对方忙时(正在和其他人通话)回调
     * @param status 总是 0
     * @param peerName 对方的用户ID
     */
    virtual void Busy(int status, char *peerName) = 0;
 
    /**
     * 对方接受己方视频呼叫时回调
     * @param status 总是 0
     * @param peerName 呼叫方的用户ID
     */
    virtual void VideoAccept(int status, char *peerName) = 0;
 
    /**
     * 对方接受己方语音呼叫时回调
     * @param status 总是 0
     * @param peerName 呼叫方的用户ID
     */
    virtual void AudioAccept(int status, char *peerName) = 0;
 
    /**
     * 对方拒绝了己方呼叫时回调
     * @param status 总是 0
     * @param peerName 对方的用户ID
     */
    virtual void Reject(int status, char *peerName) = 0;
 
    /**
     * 呼叫接通,并且可以开始收发音视频数据时回调
     * @param status 总是 0
     * @param peerName 对方用户ID
     * @param callType 呼叫类型
     * @param netType 对方网络类型
     * @param cpuLevel 对方CPU Level
     * @param aspect 对方屏幕宽高比
     * @param peerSdp 对方呼叫 SDP 参数
     * @param peerOS 对方系统类型
     * @param voipSdp 音视频 SDP 参数
     * @param recommendBitrate 建议的视频比特率
     */
    virtual void SendMediaDataStart(int status, char *peerName, int callType, int netType, int cpuLevel,
                        int aspect, char *peerSdp, char *peerOS, char *voipSdp, int recommendBitrate) = 0;
 
    /**
     * 对方取消了视频呼叫时回调
     * @param status 总是 0
     * @param peerName 对方的用户ID
     */
    virtual void MissVideoCall(int status, char *peerName) = 0;
 
    /**
     * 对方取消了音频呼叫时回调
     * @param status 总是 0
     * @param peerName 对方的用户ID
     */
    virtual void MissAudioCall(int status, char *peerName) = 0;
 
    /**
     * 对方掉线时回调
     * @param status 总是 0
     * @param peerName 对方的用户ID
     */
    virtual void PeerOffline(int status, char *peerName) = 0;
 
    /**
     * 对方同时在呼叫己方时回调
     * @param status 总是 0
     * @param peerUserID 对方用户ID
     * @param extraData 扩展数据
     */
    virtual void CallAcceptTogether(int status, char *peerName, char *extraData, int len) = 0;
 
    /**
     * 呼叫请求服务器收到时回调
     * @param status 总是 0
     * @param peerName对方用户ID
     */
    virtual void serverAckCall(int status, char *peerName) = 0;
 
    /**
     * 呼叫请求对方收到时回调
     * @param status 总是 0
     * @param peerName对方用户ID
     */
    virtual void peerAckCall(int status, char *peerName) = 0;
 
}

IMessageListener 说明

class IMessageListener {
	/**
	 * 消息状态确认
	 * @param msguuid 发送端生成的uuid
	 * @param uuid 服务端生成的全局唯一uuid
	 * @param status SERVER_RECEIVED
	 * @param timestamp 时间戳
	 */
   virtual void MessageResponse(char *msguuid, uint64_t uuid, MessageStatus status, uint64_t timestamp) = 0;
 
    /**
     * 个人消息接收
     * @param uuid 服务端生成的全局唯一uuid
     * @param peerName 对方用户ID
     * @param content 消息内容
     * @param timestamp 时间戳
     * @param msguuid 发送端生成的uuid
     */
    virtual void UserMessageReceive(uint64_t uuid, char *peerName, char *content, uint64_t timestamp, char *msguuid) = 0;
 
    /**
     * 系统消息接收
     * @param uuid
     * @param content 消息内容,json格式,需要应用层解析
     * @param timestamp 时间戳
     * @param msguuid 发送端生成的uuid
     */
    virtual void SystemNotify(uint64_t uuid, char *content, uint64_t timestamp, char *msg_uuid) = 0;
 
}

IMediaListener 说明

class IMediaListener
{
    /**
     * 收到未解码的视频数据时回调
     * @param data 收到的视频数据
     * @param len  收到的视频数据字节数长度
     * @param encodeType 编码类型
     * @param keyFrame 1 表示关键帧
     * @param videoDirection 视频画面方向
     * @param camPosition 1 表示前置摄像头, 0 表示后置摄像头
     * @param fitRate 比特率
     * @param timeStamp 数据相对时间戳, 单位毫秒
     */
  virtual void VideoUndecoededDataReceive(char *data, int length, int encodeType, 
                          int keyFrame, int videoDirection, int camPosition,
                          int fitRate, uint64_t timestamp) = 0;
 
    /**
     * 收到未解码的语音数据时回调
     * @param data 收到的语音数据
     * @param length 收到的语音数据字节数长度
     * @param encodeType 编码类型
     * @param vad 静音检测是否有效
     * @param time_stamp 数据相对时间戳, 单位毫秒
     */
  virtual void AudioUndecoededDataReceive(char *data, int length, int encodeType, 
                                          int vad, uint64_t time_stamp) = 0;
 
}