using UnityEngine; using System.Collections; using com.fpnn.livedata; using System.Collections.Generic; using System; using com.fpnn.proto; namespace com.fpnn.rtm { public partial class RTMClient { //===========================[ IMLIB_GetGroupInfos ]=========================// public bool IMLIB_GetGroupInfos(Action, int> callback, HashSet groupIds, 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_getgroupinfos"); quest.Param("gids", groupIds); 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 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_GroupInfo info = new IMLIB_GroupInfo(); info.groupId = xid[i]; info.ownerUid = ownerUids[i]; info.name = names[i]; info.portraitUrl = portraitUrls[i]; info.profile = profiles[i]; info.attrs = attrs[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_GetGroupInfos(out List infos, HashSet groupIds, int timeout = 0) { infos = null; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getgroupinfos"); quest.Param("gids", groupIds); 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 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_GroupInfo info = new IMLIB_GroupInfo(); info.groupId = xid[i]; info.ownerUid = ownerUids[i]; info.name = names[i]; info.portraitUrl = portraitUrls[i]; info.profile = profiles[i]; info.attrs = attrs[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_GetGroupInfo ]=========================// public bool IMLIB_GetGroupInfo(Action callback, long groupId, 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_getgroupinfo"); quest.Param("gid", groupId); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { IMLIB_GroupInfo info = null; if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { info = new IMLIB_GroupInfo(); info.groupId = groupId; 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.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_GetGroupInfo(out IMLIB_GroupInfo info, long groupId, int timeout = 0) { info = null; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getgroupinfo"); quest.Param("gid", groupId); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { info = new IMLIB_GroupInfo(); info.groupId = groupId; 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.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_JoinGroup ]=========================// public bool IMLIB_JoinGroup(DoneDelegate callback, long groupId, 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_joingroup"); quest.Param("gid", groupId); 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_JoinGroup(long groupId, 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_joingroup"); quest.Param("gid", groupId); if (extra != null) quest.Param("extra", extra); if (attrs != null) quest.Param("attrs", attrs); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_AckJoinGroup ]=========================// public bool IMLIB_AckJoinGroup(DoneDelegate callback, long groupId, 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_ackjoingroup"); quest.Param("gid", groupId); 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_AckJoinGroup(long groupId, 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_ackjoingroup"); quest.Param("gid", groupId); 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_InviteIntoGroup ]=========================// public bool IMLIB_InviteIntoGroup(DoneDelegate callback, long groupId, 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_inviteintogroup"); quest.Param("gid", groupId); 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_InviteIntoGroup(long groupId, 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_inviteintogroup"); quest.Param("gid", groupId); 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_AckInviteIntoGroup ]=========================// public bool IMLIB_AckInviteIntoGroup(DoneDelegate callback, long groupId, 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_ackinviteintogroup"); quest.Param("gid", groupId); 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_AckInviteIntoGroup(long groupId, 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_ackinviteintogroup"); quest.Param("gid", groupId); 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_DismissGroup ]=========================// public bool IMLIB_DismissGroup(DoneDelegate callback, long groupId, 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_dismissgroup"); quest.Param("gid", groupId); 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_DismissGroup(long groupId, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_dismissgroup"); quest.Param("gid", groupId); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_RemoveGroupMembers ]=========================// public bool IMLIB_RemoveGroupMembers(DoneDelegate callback, long groupId, 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_removegroupmembers"); quest.Param("gid", groupId); 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_RemoveGroupMembers(long groupId, HashSet uids, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_removegroupmembers"); quest.Param("gid", groupId); quest.Param("uids", uids); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_LeaveGroup ]=========================// public bool IMLIB_LeaveGroup(DoneDelegate callback, long groupId, 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_leavegroup"); quest.Param("gid", groupId); 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_LeaveGroup(long groupId, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_leavegroup"); quest.Param("gid", groupId); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_TransferGroup ]=========================// public bool IMLIB_TransferGroup(DoneDelegate callback, long groupId, 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_transfergroup"); quest.Param("gid", groupId); 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_TransferGroup(long groupId, long uid, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_transfergroup"); quest.Param("gid", groupId); quest.Param("to_uid", uid); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_AddGroupManagers ]=========================// public bool IMLIB_AddGroupManagers(DoneDelegate callback, long groupId, 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_addgroupmanagers"); quest.Param("gid", groupId); 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_AddGroupManagers(long groupId, HashSet uids, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_addgroupmanagers"); quest.Param("gid", groupId); quest.Param("uids", uids); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_RemoveGroupManagers ]=========================// public bool IMLIB_RemoveGroupManagers(DoneDelegate callback, long groupId, 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_removegroupmanagers"); quest.Param("gid", groupId); 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_RemoveGroupManagers(long groupId, HashSet uids, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_removegroupmanagers"); quest.Param("gid", groupId); quest.Param("uids", uids); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_AddGroupMemberBan ]=========================// public bool IMLIB_AddGroupMemberBan(DoneDelegate callback, long groupId, 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_addgroupmemberban"); quest.Param("gid", groupId); 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_AddGroupMemberBan(long groupId, 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_addgroupmemberban"); quest.Param("gid", groupId); quest.Param("to_uid", uid); quest.Param("ban_time", banTime); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_RemoveGroupMemberBan ]=========================// public bool IMLIB_RemoveGroupMemberBan(DoneDelegate callback, long groupId, 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_removegroupmemberban"); quest.Param("gid", groupId); 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_RemoveGroupMemberBan(long groupId, long uid, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_removegroupmemberban"); quest.Param("gid", groupId); quest.Param("to_uid", uid); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ IMLIB_GetGroupRoomNick ]=========================// public bool IMLIB_GetGroupRoomNick(Action, int> callback, int type, long xid, HashSet uids, 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_getgrouproomnick"); quest.Param("type", type); quest.Param("xid", xid); quest.Param("uids", uids); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { Dictionary data = new Dictionary(); if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { data = WantStringDictionary(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_GetGroupRoomNick(out Dictionary data, int type, long xid, HashSet uids, int timeout = 0) { data = null; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getgrouproomnick"); quest.Param("type", type); quest.Param("xid", xid); quest.Param("uids", uids); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { data = WantStringDictionary(answer, "data"); return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } //===========================[ IMLIB_GetGroupMembers ]=========================// public bool IMLIB_GetGroupMembers(Action>, int> callback, long groupId, 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_getgroupmembers"); quest.Param("gid", groupId); 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_GetGroupMembers(out List> data, long groupId, int timeout = 0) { data = null; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getgroupmembers"); quest.Param("gid", groupId); 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_GetGroupMemberCount ]=========================// public bool IMLIB_GetGroupMemberCount(Action callback, long groupId, 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_getgroupmembercount"); quest.Param("gid", groupId); 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_GetGroupMemberCount(out int count, long groupId, int timeout = 0) { count = -1; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getgroupmembercount"); quest.Param("gid", groupId); 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_GetGroupApplyList ]=========================// public bool IMLIB_GetGroupApplyList(Action, int> callback, long groupId, 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_getgroupapplylist"); quest.Param("gid", groupId); 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_GroupApply groupApply = new IMLIB_GroupApply(); groupApply.uid = fromUid[i]; groupApply.status = status[i]; groupApply.extra = grantExtra[i]; groupApply.createTime = createTime[i]; groupApply.inviteUid = inviteUid[i]; groupApply.attrs = attrs[i]; applyList.Add(groupApply); } } 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_GetGroupApplyList(out List applyList, long groupId, 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_getgroupapplylist"); quest.Param("gid", groupId); ; 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_GroupApply groupApply = new IMLIB_GroupApply(); groupApply.uid = fromUid[i]; groupApply.status = status[i]; groupApply.extra = grantExtra[i]; groupApply.createTime = createTime[i]; groupApply.inviteUid = inviteUid[i]; groupApply.attrs = attrs[i]; applyList.Add(groupApply); } return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } //===========================[ IMLIB_GetGroupRequestList ]=========================// public bool IMLIB_GetGroupRequestList(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_getgrouprequestlist"); 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_GroupRequest groupRequest = new IMLIB_GroupRequest(); groupRequest.gid = targetXid[i]; groupRequest.createTime = createTime[i]; groupRequest.attrs = attrs[i]; requestList.Add(groupRequest); } } 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_GetGroupRequestList(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_getgrouprequestlist"); 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_GroupRequest groupRequest = new IMLIB_GroupRequest(); groupRequest.gid = targetXid[i]; groupRequest.createTime = createTime[i]; groupRequest.attrs = attrs[i]; requestList.Add(groupRequest); } return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } //===========================[ IMLIB_GetGroupInviteList ]=========================// public bool IMLIB_GetGroupInviteList(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_getgroupinvitelist"); 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_GroupInvite groupInvite = new IMLIB_GroupInvite(); groupInvite.gid = targetXid[i]; groupInvite.createTime = createTime[i]; groupInvite.fromUid = fromXid[i]; groupInvite.attrs = attrs[i]; inviteList.Add(groupInvite); } } 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_GetGroupInviteList(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_getgroupinvitelist"); 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_GroupInvite groupInvite = new IMLIB_GroupInvite(); groupInvite.gid = targetXid[i]; groupInvite.createTime = createTime[i]; groupInvite.fromUid = fromXid[i]; groupInvite.attrs = attrs[i]; inviteList.Add(groupInvite); } return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } } }