// 쿼리 실행 완료 콜백 private void OnExecutedQueries(DBInstance dBInstance, DBQueryBase[] queries, bool isSuccess) { foreach (DBQuery it in queries) { var qd = it.UserData as ReqQueryData; if (qd == null) { continue; } lock (qd) { qd.IsSuccess = isSuccess; qd.FinishedQueries.Add(it); if (qd.FinishedQueries.Count == qd.ReqQueries.Count) { lock (ReqQueryGroups) { ReqQueryGroups.Remove(qd.ContainerNode); } qd.ContainerNode = null; lock (FinishedQueryGroups) { FinishedQueryGroups.Enqueue(qd); } } } } }
// 쿼리 요청 public void ReqQuery(DBQuery[] queries, Action <bool, DBQuery[]> onComplete = null) { var qd = new ReqQueryData(); qd.OnComplete = onComplete; qd.ReqQueries.AddRange(queries); lock (ReqQueryGroups) { qd.ContainerNode = ReqQueryGroups.AddLast(qd); } foreach (var it in queries) { it.UserData = qd; var dbInstance = GetDBInstance(it.DBType); if (dbInstance != null) { dbInstance.RequestExecuteQuery(it); } else { Utility.InvokeSafe(onComplete, false, queries); } } }