using UnityEngine; using System.Collections; using com.fpnn.livedata; using System.Collections.Generic; using System; using com.fpnn.proto; using static com.fpnn.rtm.RTMClient; namespace com.fpnn.rtm { public partial class RTMClient { //===========================[ IMLIB_GetRoomInfos ]=========================// public bool IMLIB_GetRoomInfos(Action, int> callback, HashSet roomIds, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_getroominfos"); quest.Param("rids", roomIds); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { List infos = null; if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { infos = new List(); List xid = GetLongList(answer, "xid"); List ownerUids = GetLongList(answer, "ownerUid"); List names = GetStringList(answer, "name"); List portraitUrls = GetStringList(answer, "portraitUrl"); List profiles = GetStringList(answer, "profile"); List attrs = GetStringList(answer, "attrs"); List extra = GetStringList(answer, "extra"); List applyGrants = GetIntList(answer, "applyGrant"); List inviteGrants = GetIntList(answer, "inviteGrant"); List> managerUids = GetLongListList(answer, "managerUids"); for (int i = 0; i < xid.Count && i < ownerUids.Count && i < names.Count && i < portraitUrls.Count && i < profiles.Count && i < attrs.Count && i < applyGrants.Count && i < inviteGrants.Count && i < managerUids.Count; ++i) { IMLIB_RoomInfo info = new IMLIB_RoomInfo(); info.roomId = xid[i]; info.ownerUid = ownerUids[i]; info.name = names[i]; info.portraitUrl = portraitUrls[i]; info.profile = profiles[i]; info.attrs = attrs[i]; info.extra = extra[i]; info.applyGrant = (IMLIB_ApplyGrant)applyGrants[i]; info.inviteGrant = (IMLIB_InviteGrant)inviteGrants[i]; info.managerUids = managerUids[i]; infos.Add(info); } } catch (Exception) { errorCode = fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } callback(infos, errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_GetRoomInfos(out List infos, HashSet roomIds, int timeout = 0) { infos = null; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getroominfos"); quest.Param("rids", roomIds); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { infos = new List(); List xid = GetLongList(answer, "xid"); List ownerUids = GetLongList(answer, "ownerUid"); List names = GetStringList(answer, "name"); List portraitUrls = GetStringList(answer, "portraitUrl"); List profiles = GetStringList(answer, "profile"); List attrs = GetStringList(answer, "attrs"); List extra = GetStringList(answer, "extra"); List applyGrants = GetIntList(answer, "applyGrant"); List inviteGrants = GetIntList(answer, "inviteGrant"); List> managerUids = GetLongListList(answer, "managerUids"); for (int i = 0; i < xid.Count && i < ownerUids.Count && i < names.Count && i < portraitUrls.Count && i < profiles.Count && i < attrs.Count && i < applyGrants.Count && i < inviteGrants.Count && i < managerUids.Count; ++i) { IMLIB_RoomInfo info = new IMLIB_RoomInfo(); info.roomId = xid[i]; info.ownerUid = ownerUids[i]; info.name = names[i]; info.portraitUrl = portraitUrls[i]; info.profile = profiles[i]; info.attrs = attrs[i]; info.extra = extra[i]; info.applyGrant = (IMLIB_ApplyGrant)applyGrants[i]; info.inviteGrant = (IMLIB_InviteGrant)inviteGrants[i]; info.managerUids = managerUids[i]; infos.Add(info); } return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } //===========================[ IMLIB_GetRoomInfo ]=========================// public bool IMLIB_GetRoomInfo(Action callback, long roomId, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_getroominfo"); quest.Param("rid", roomId); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { IMLIB_RoomInfo info = null; if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { info = new IMLIB_RoomInfo(); info.roomId = roomId; info.name = answer.Want("name"); info.ownerUid = answer.Want("ownerUid"); info.portraitUrl = answer.Want("portraitUrl"); info.profile = answer.Want("profile"); info.attrs = answer.Want("attrs"); info.extra = answer.Want("extra"); info.applyGrant = (IMLIB_ApplyGrant)answer.Want("applyGrant"); info.inviteGrant = (IMLIB_InviteGrant)answer.Want("inviteGrant"); info.managerUids = GetLongList(answer, "managerUids"); } catch (Exception) { errorCode = fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } callback(info, errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_GetRoomInfo(out IMLIB_RoomInfo info, long roomId, int timeout = 0) { info = null; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getroominfo"); quest.Param("rid", roomId); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { info = new IMLIB_RoomInfo(); info.roomId = roomId; info.name = answer.Want("name"); info.ownerUid = answer.Want("ownerUid"); info.portraitUrl = answer.Want("portraitUrl"); info.profile = answer.Want("profile"); info.attrs = answer.Want("attrs"); info.extra = answer.Want("extra"); info.applyGrant = (IMLIB_ApplyGrant)answer.Want("applyGrant"); info.inviteGrant = (IMLIB_InviteGrant)answer.Want("inviteGrant"); info.managerUids = GetLongList(answer, "managerUids"); return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } //===========================[ IMLIB_JoinRoom ]=========================// public bool IMLIB_JoinRoom(DoneDelegate callback, long roomId, string extra = null, string attrs = null, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_joinroom"); quest.Param("rid", roomId); if (extra != null) quest.Param("extra", extra); if (attrs != null) quest.Param("attrs", attrs); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_JoinRoom(long roomId, string extra = null, string attrs = null, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_joinroom"); quest.Param("rid", roomId); if (extra != null) quest.Param("extra", extra); if (attrs != null) quest.Param("attrs", attrs); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_AckJoinRoom ]=========================// public bool IMLIB_AckJoinRoom(DoneDelegate callback, long roomId, long fromUid, bool agree, string attrs = null, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_ackjoinroom"); quest.Param("rid", roomId); quest.Param("from", fromUid); quest.Param("agree", agree); if (attrs != null) quest.Param("attrs", attrs); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_AckJoinRoom(long roomId, long fromUid, bool agree, string attrs = null, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_ackjoinroom"); quest.Param("rid", roomId); quest.Param("from", fromUid); quest.Param("agree", agree); if (attrs != null) quest.Param("attrs", attrs); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_InviteIntoRoom ]=========================// public bool IMLIB_InviteIntoRoom(DoneDelegate callback, long roomId, HashSet uids, string extra = null, string attrs = null, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_inviteintoroom"); quest.Param("rid", roomId); quest.Param("target_uids", uids); if (extra != null) quest.Param("extra", extra); if (attrs != null) quest.Param("attrs", attrs); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_InviteIntoRoom(long roomId, HashSet uids, string extra = null, string attrs = null, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_inviteintoroom"); quest.Param("rid", roomId); quest.Param("target_uids", uids); if (extra != null) quest.Param("extra", extra); if (attrs != null) quest.Param("attrs", attrs); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_AckInviteIntoRoom ]=========================// public bool IMLIB_AckInviteIntoRoom(DoneDelegate callback, long roomId, long fromUid, bool agree, string attrs = null, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_ackinviteintoroom"); quest.Param("rid", roomId); quest.Param("from", fromUid); quest.Param("agree", agree); if (attrs != null) quest.Param("attrs", attrs); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_AckInviteIntoRoom(long roomId, long fromUid, bool agree, string attrs = null, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_ackinviteintoroom"); quest.Param("rid", roomId); quest.Param("from", fromUid); quest.Param("agree", agree); if (attrs != null) quest.Param("attrs", attrs); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_DismissRoom ]=========================// public bool IMLIB_DismissRoom(DoneDelegate callback, long roomId, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_dismissroom"); quest.Param("rid", roomId); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_DismissRoom(long roomId, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_dismissroom"); quest.Param("rid", roomId); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_RemoveRoomMembers ]=========================// public bool IMLIB_RemoveRoomMembers(DoneDelegate callback, long roomId, HashSet uids, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_removeroommembers"); quest.Param("rid", roomId); quest.Param("uids", uids); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_RemoveRoomMembers(long roomId, HashSet uids, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_removeroommembers"); quest.Param("rid", roomId); quest.Param("uids", uids); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_LeaveRoom ]=========================// public bool IMLIB_LeaveRoom(DoneDelegate callback, long roomId, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_leaveroom"); quest.Param("rid", roomId); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_LeaveRoom(long roomId, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_leaveroom"); quest.Param("rid", roomId); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_TransferRoom ]=========================// public bool IMLIB_TransferRoom(DoneDelegate callback, long roomId, long uid, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_transferroom"); quest.Param("rid", roomId); quest.Param("to_uid", uid); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_TransferRoom(long roomId, long uid, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_transferroom"); quest.Param("rid", roomId); quest.Param("to_uid", uid); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_AddRoomManagers ]=========================// public bool IMLIB_AddRoomManagers(DoneDelegate callback, long roomId, HashSet uids, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_addroommanagers"); quest.Param("rid", roomId); quest.Param("uids", uids); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_AddRoomManagers(long roomId, HashSet uids, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_addroommanagers"); quest.Param("rid", roomId); quest.Param("uids", uids); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_RemoveRoomManagers ]=========================// public bool IMLIB_RemoveRoomManagers(DoneDelegate callback, long roomId, HashSet uids, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_removeroommanagers"); quest.Param("rid", roomId); quest.Param("uids", uids); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_RemoveRoomManagers(long roomId, HashSet uids, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_removeroommanagers"); quest.Param("rid", roomId); quest.Param("uids", uids); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_AddRoomMemberBan ]=========================// public bool IMLIB_AddRoomMemberBan(DoneDelegate callback, long roomId, long uid, int banTime, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_addroommemberban"); quest.Param("rid", roomId); quest.Param("to_uid", uid); quest.Param("ban_time", banTime); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_AddRoomMemberBan(long roomId, long uid, int banTime, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_addroommemberban"); quest.Param("rid", roomId); quest.Param("to_uid", uid); quest.Param("ban_time", banTime); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_RemoveRoomMemberBan ]=========================// public bool IMLIB_RemoveRoomMemberBan(DoneDelegate callback, long roomId, long uid, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_removeroommemberban"); quest.Param("rid", roomId); quest.Param("to_uid", uid); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { callback(errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_RemoveRoomMemberBan(long roomId, long uid, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_removeroommemberban"); quest.Param("rid", roomId); quest.Param("to_uid", uid); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_GetRoomMembers ]=========================// public bool IMLIB_GetRoomMembers(Action>, int> callback, long roomId, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_getroommembers"); quest.Param("rid", roomId); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { List> data = new List>(); if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { data = GetListStringDictionary(answer, "data"); } catch (Exception) { errorCode = fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } callback(data, errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_GetRoomMembers(out List> data, long roomId, int timeout = 0) { data = null; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getroommembers"); quest.Param("rid", roomId); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { data = GetListStringDictionary(answer, "data"); return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } //===========================[ IMLIB_GetRoomMemberCount ]=========================// public bool IMLIB_GetRoomMemberCount(Action callback, long roomId, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(0, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_getroommembercount"); quest.Param("rid", roomId); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { int count = 0; if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { count = answer.Want("cn"); } catch (Exception) { errorCode = fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } callback(count, errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(0, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_GetRoomMemberCount(out int count, long roomId, int timeout = 0) { count = -1; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getroommembercount"); quest.Param("rid", roomId); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { count = answer.Want("cn"); return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } //===========================[ IMLIB_GetRoomApplyList ]=========================// public bool IMLIB_GetRoomApplyList(Action, int> callback, long roomId, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_getroomapplylist"); quest.Param("rid", roomId); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { List applyList = new List(); if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { List fromUid = GetLongList(answer, "fromUid"); List status = GetIntList(answer, "status"); List grantExtra = GetStringList(answer, "grantExtra"); List createTime = GetLongList(answer, "createTime"); List inviteUid = GetLongList(answer, "inviteUid"); List attrs = GetStringList(answer, "attrs"); for (int i = 0; i < fromUid.Count && i < status.Count && i < grantExtra.Count && i < createTime.Count && i < inviteUid.Count && i < attrs.Count; ++i) { IMLIB_RoomApply roomApply = new IMLIB_RoomApply(); roomApply.uid = fromUid[i]; roomApply.status = status[i]; roomApply.extra = grantExtra[i]; roomApply.createTime = createTime[i]; roomApply.inviteUid = inviteUid[i]; roomApply.attrs = attrs[i]; applyList.Add(roomApply); } } catch (Exception) { errorCode = fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } callback(applyList, errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_GetRoomApplyList(out List applyList, long roomId, int timeout = 0) { applyList = new List(); TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getroomapplylist"); quest.Param("rid", roomId); ; Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { List fromUid = GetLongList(answer, "fromUid"); List status = GetIntList(answer, "status"); List grantExtra = GetStringList(answer, "grantExtra"); List createTime = GetLongList(answer, "createTime"); List inviteUid = GetLongList(answer, "inviteUid"); List attrs = GetStringList(answer, "attrs"); for (int i = 0; i < fromUid.Count && i < status.Count && i < grantExtra.Count && i < createTime.Count && i < inviteUid.Count && i < attrs.Count; ++i) { IMLIB_RoomApply roomApply = new IMLIB_RoomApply(); roomApply.uid = fromUid[i]; roomApply.status = status[i]; roomApply.extra = grantExtra[i]; roomApply.createTime = createTime[i]; roomApply.inviteUid = inviteUid[i]; roomApply.attrs = attrs[i]; applyList.Add(roomApply); } return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } //===========================[ IMLIB_GetRoomRequestList ]=========================// public bool IMLIB_GetRoomRequestList(Action, int> callback, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_getroomrequestlist"); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { List requestList = new List(); if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { List targetXid = GetLongList(answer, "targetXid"); List createTime = GetLongList(answer, "createTime"); List attrs = GetStringList(answer, "attrs"); for (int i = 0; i < targetXid.Count && i < createTime.Count && i < attrs.Count; ++i) { IMLIB_RoomRequest roomRequest = new IMLIB_RoomRequest(); roomRequest.rid = targetXid[i]; roomRequest.createTime = createTime[i]; roomRequest.attrs = attrs[i]; requestList.Add(roomRequest); } } catch (Exception) { errorCode = fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } callback(requestList, errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_GetRoomRequestList(out List requestList, int timeout = 0) { requestList = new List(); TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getroomrequestlist"); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { List targetXid = GetLongList(answer, "targetXid"); List createTime = GetLongList(answer, "createTime"); List attrs = GetStringList(answer, "attrs"); for (int i = 0; i < targetXid.Count && i < createTime.Count && i < attrs.Count; ++i) { IMLIB_RoomRequest roomRequest = new IMLIB_RoomRequest(); roomRequest.rid = targetXid[i]; roomRequest.createTime = createTime[i]; roomRequest.attrs = attrs[i]; requestList.Add(roomRequest); } return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } //===========================[ IMLIB_GetRoomInviteList ]=========================// public bool IMLIB_GetRoomInviteList(Action, int> callback, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { if (RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return false; } Quest quest = new Quest("imclient_getroominvitelist"); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { List inviteList = new List(); if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { List targetXid = GetLongList(answer, "targetXid"); List createTime = GetLongList(answer, "createTime"); List fromXid = GetLongList(answer, "fromXid"); List attrs = GetStringList(answer, "attrs"); for (int i = 0; i < targetXid.Count && i < createTime.Count && i < fromXid.Count && i < attrs.Count; ++i) { IMLIB_RoomInvite roomInvite = new IMLIB_RoomInvite(); roomInvite.rid = targetXid[i]; roomInvite.createTime = createTime[i]; roomInvite.fromUid = fromXid[i]; roomInvite.attrs = attrs[i]; inviteList.Add(roomInvite); } } catch (Exception) { errorCode = fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } callback(inviteList, errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int IMLIB_GetRoomInviteList(out List inviteList, int timeout = 0) { inviteList = new List(); TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getroominvitelist"); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { List targetXid = GetLongList(answer, "targetXid"); List createTime = GetLongList(answer, "createTime"); List fromXid = GetLongList(answer, "fromXid"); List attrs = GetStringList(answer, "attrs"); for (int i = 0; i < targetXid.Count && i < createTime.Count && i < fromXid.Count && i < attrs.Count; ++i) { IMLIB_RoomInvite roomInvite = new IMLIB_RoomInvite(); roomInvite.rid = targetXid[i]; roomInvite.createTime = createTime[i]; roomInvite.fromUid = fromXid[i]; roomInvite.attrs = attrs[i]; inviteList.Add(roomInvite); } return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } } }