tanghai před 8 roky
rodič
revize
3a0ff27c4f

+ 36 - 0
Server/Hotfix/Handler/DBQueryBatchRequestHandler.cs

@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using Model;
+
+namespace Hotfix
+{
+	[MessageHandler(AppType.DB)]
+	public class DBQueryBatchRequestHandler : AMRpcHandler<DBQueryBatchRequest, DBQueryBatchResponse>
+	{
+		protected override async void Run(Session session, DBQueryBatchRequest message, Action<DBQueryBatchResponse> reply)
+		{
+			DBQueryBatchResponse response = new DBQueryBatchResponse();
+			try
+			{
+				DBCacheComponent dbCacheComponent = Game.Scene.GetComponent<DBCacheComponent>();
+				List<Entity> entitys = await dbCacheComponent.GetBatch(message.CollectionName, message.IdList);
+
+				response.Entitys = entitys;
+
+				if (message.NeedCache)
+				{
+					foreach (Entity entity in entitys)
+					{
+						dbCacheComponent.AddToCache(entity, message.CollectionName);
+					}
+				}
+
+				reply(response);
+			}
+			catch (Exception e)
+			{
+				ReplyError(response, e, reply);
+			}
+		}
+	}
+}

+ 36 - 0
Server/Hotfix/Handler/DBQueryJsonRequestHandler.cs

@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using Model;
+
+namespace Hotfix
+{
+	[MessageHandler(AppType.DB)]
+	public class DBQueryJsonRequestHandler : AMRpcHandler<DBQueryJsonRequest, DBQueryJsonResponse>
+	{
+		protected override async void Run(Session session, DBQueryJsonRequest message, Action<DBQueryJsonResponse> reply)
+		{
+			DBQueryJsonResponse response = new DBQueryJsonResponse();
+			try
+			{
+				DBCacheComponent dbCacheComponent = Game.Scene.GetComponent<DBCacheComponent>();
+				List<Entity> entitys = await dbCacheComponent.GetJson(message.CollectionName, message.Json);
+
+				response.Entitys = entitys;
+
+				if (message.NeedCache)
+				{
+					foreach (Entity entity in entitys)
+					{
+						dbCacheComponent.AddToCache(entity, message.CollectionName);
+					}
+				}
+
+				reply(response);
+			}
+			catch (Exception e)
+			{
+				ReplyError(response, e, reply);
+			}
+		}
+	}
+}

+ 32 - 0
Server/Hotfix/Handler/DBQueryRequestHandler.cs

@@ -0,0 +1,32 @@
+using System;
+using Model;
+
+namespace Hotfix
+{
+	[MessageHandler(AppType.DB)]
+	public class DBQueryRequestHandler : AMRpcHandler<DBQueryRequest, DBQueryResponse>
+	{
+		protected override async void Run(Session session, DBQueryRequest message, Action<DBQueryResponse> reply)
+		{
+			DBQueryResponse response = new DBQueryResponse();
+			try
+			{
+				DBCacheComponent dbCacheComponent = Game.Scene.GetComponent<DBCacheComponent>();
+				Entity entity = await dbCacheComponent.Get(message.CollectionName, message.Id);
+
+				response.Entity = entity;
+
+				if (message.NeedCache && entity != null)
+				{
+					dbCacheComponent.AddToCache(entity, message.CollectionName);
+				}
+
+				reply(response);
+			}
+			catch (Exception e)
+			{
+				ReplyError(response, e, reply);
+			}
+		}
+	}
+}

+ 39 - 0
Server/Hotfix/Handler/DBSaveBatchRequestHandler.cs

@@ -0,0 +1,39 @@
+using System;
+using Model;
+
+namespace Hotfix
+{
+	[MessageHandler(AppType.DB)]
+	public class DBSaveBatchRequestHandler : AMRpcHandler<DBSaveBatchRequest, DBSaveBatchResponse>
+	{
+		protected override async void Run(Session session, DBSaveBatchRequest message, Action<DBSaveBatchResponse> reply)
+		{
+			DBSaveBatchResponse response = new DBSaveBatchResponse();
+			try
+			{
+				DBCacheComponent dbCacheComponent = Game.Scene.GetComponent<DBCacheComponent>();
+
+				if (message.CollectionName == "")
+				{
+					message.CollectionName = message.Entitys[0].GetType().Name;
+				}
+
+				if (message.NeedCache)
+				{
+					foreach (Entity entity in message.Entitys)
+					{
+						dbCacheComponent.AddToCache(entity, message.CollectionName);
+					}
+				}
+
+				await dbCacheComponent.AddBatch(message.Entitys, message.CollectionName);
+
+				reply(response);
+			}
+			catch (Exception e)
+			{
+				ReplyError(response, e, reply);
+			}
+		}
+	}
+}

+ 33 - 0
Server/Hotfix/Handler/DBSaveRequestHandler.cs

@@ -0,0 +1,33 @@
+using System;
+using Model;
+
+namespace Hotfix
+{
+	[MessageHandler(AppType.DB)]
+	public class DBSaveRequestHandler : AMRpcHandler<DBSaveRequest, DBSaveResponse>
+	{
+		protected override async void Run(Session session, DBSaveRequest message, Action<DBSaveResponse> reply)
+		{
+			DBSaveResponse response = new DBSaveResponse();
+			try
+			{
+				DBCacheComponent dbCacheComponent = Game.Scene.GetComponent<DBCacheComponent>();
+				if (message.CollectionName == "")
+				{
+					message.CollectionName = message.Entity.GetType().Name;
+				}
+
+				if (message.NeedCache)
+				{
+					dbCacheComponent.AddToCache(message.Entity, message.CollectionName);
+				}
+				await dbCacheComponent.Add(message.Entity, message.CollectionName);
+				reply(response);
+			}
+			catch (Exception e)
+			{
+				ReplyError(response, e, reply);
+			}
+		}
+	}
+}

+ 5 - 0
Server/Hotfix/Server.Hotfix.csproj

@@ -38,6 +38,11 @@
     <Compile Include="Component\RealmGateAddressComponentE.cs" />
     <Compile Include="Handler\ActorRpc_TestHandler.cs" />
     <Compile Include="Handler\Actor_TestHandler.cs" />
+    <Compile Include="Handler\DBQueryBatchRequestHandler.cs" />
+    <Compile Include="Handler\DBQueryJsonRequestHandler.cs" />
+    <Compile Include="Handler\DBQueryRequestHandler.cs" />
+    <Compile Include="Handler\DBSaveBatchRequestHandler.cs" />
+    <Compile Include="Handler\DBSaveRequestHandler.cs" />
     <Compile Include="Handler\G2M_CreateUnitHandler.cs" />
     <Compile Include="Helper\MessageHelper.cs" />
     <Compile Include="Handler\C2G_LoginGateHandler.cs" />