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_GetUserInfos ]=========================// public bool IMLIB_GetUserInfos(Action, int> callback, 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_getuserinfos"); quest.Param("uids", uids); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { List infos = null; if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { infos = new List(); List uids = GetLongList(answer, "uid"); 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"); for (int i = 0; i < uids.Count && i < names.Count && i < portraitUrls.Count && i < profiles.Count && i < attrs.Count && i < applyGrants.Count; ++i) { IMLIB_UserInfo info = new IMLIB_UserInfo(); info.uid = uids[i]; info.name = names[i]; info.portraitUrl = portraitUrls[i]; info.profile = profiles[i]; info.attrs = attrs[i]; info.applyGrant = (IMLIB_ApplyGrant)applyGrants[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_GetUserInfos(out List infos, HashSet uids, int timeout = 0) { infos = null; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getuserinfos"); quest.Param("uids", uids); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { infos = new List(); List uid = GetLongList(answer, "uid"); 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"); for (int i = 0; i < uid.Count && i < names.Count && i < portraitUrls.Count && i < profiles.Count && i < attrs.Count && i < applyGrants.Count; ++i) { IMLIB_UserInfo info = new IMLIB_UserInfo(); info.uid = uid[i]; info.name = names[i]; info.portraitUrl = portraitUrls[i]; info.profile = profiles[i]; info.attrs = attrs[i]; info.applyGrant = (IMLIB_ApplyGrant)applyGrants[i]; infos.Add(info); } return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } //===========================[ IMLIB_GetUserInfo ]=========================// public bool IMLIB_GetUserInfo(Action callback, long uid, 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_getuserinfo"); quest.Param("other_uid", uid); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { IMLIB_UserInfo info = null; if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { info = new IMLIB_UserInfo(); info.uid = uid; info.name = answer.Want("name"); info.portraitUrl = answer.Want("portraitUrl"); info.profile = answer.Want("profile"); info.attrs = answer.Want("attrs"); info.applyGrant = (IMLIB_ApplyGrant)(answer.Want("applyGrant")); } 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_GetUserInfo(out IMLIB_UserInfo info, long uid, int timeout = 0) { info = null; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("imclient_getuserinfo"); quest.Param("other_uid", uid); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { info = new IMLIB_UserInfo(); info.uid = uid; info.name = answer.Want("name"); info.portraitUrl = answer.Want("portraitUrl"); info.profile = answer.Want("profile"); info.attrs = answer.Want("attrs"); info.applyGrant = (IMLIB_ApplyGrant)(answer.Want("applyGrant")); return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } } }