private int SendFileWithClient(SendFileInfo info, TCPClient client) { UpdateTimeout(ref info.remainTimeout, ref info.lastActionTimestamp); if (info.remainTimeout <= 0) { return(fpnn.ErrorCode.FPNN_EC_CORE_TIMEOUT); } long messageId = 0; Quest quest = BuildSendFileQuest(out messageId, info); bool success = client.SendQuest(quest, (Answer answer, int errorCode) => { if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { //-- long mtime = answer.Want<long>("mtime"); info.callback(messageId, fpnn.ErrorCode.FPNN_EC_OK); RTMControlCenter.ActiveFileGateClient(info.endpoint, client); return; } catch (Exception) { errorCode = fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } info.callback(0, errorCode); }, info.remainTimeout); if (success) { return(fpnn.ErrorCode.FPNN_EC_OK); } else { return(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); } }