using System; using com.fpnn.proto; namespace com.fpnn.rtm { public partial class RTMClient { //===========================[ Data Get ]=========================// //-- Action public bool DataGet(Action callback, string key, 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("dataget"); quest.Param("key", key); bool asyncStarted = client.SendQuest(quest, (Answer answer, int errorCode) => { string value = null; if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { value = answer.Get("val", null); } catch (Exception) { errorCode = fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } callback(value, errorCode); }, timeout); if (!asyncStarted && RTMConfig.triggerCallbackIfAsyncMethodReturnFalse) ClientEngine.RunTask(() => { callback(null, fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); }); return asyncStarted; } public int DataGet(out string value, string key, int timeout = 0) { value = null; TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("dataget"); quest.Param("key", key); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) return answer.ErrorCode(); try { value = answer.Get("val", null); return fpnn.ErrorCode.FPNN_EC_OK; } catch (Exception) { return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } //===========================[ Data Set ]=========================// public bool DataSet(DoneDelegate callback, string key, string value, 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("dataset"); quest.Param("key", key); quest.Param("val", value); 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 DataSet(string key, string value, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("dataset"); quest.Param("key", key); quest.Param("val", value); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } //===========================[ Data Delete ]=========================// public bool DataDelete(DoneDelegate callback, string key, 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("datadel"); quest.Param("key", key); 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 DataDelete(string key, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) return fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION; Quest quest = new Quest("datadel"); quest.Param("key", key); Answer answer = client.SendQuest(quest, timeout); return answer.ErrorCode(); } } }