usingSystem;usingSystem.Collections.Generic;usingSystem.Net;usingETModel;usingMongoDB.Bson;usingMongoDB.Bson.Serialization;usingMongoDB.Driver;namespaceETHotfix
{
[MessageHandler(AppType.Gate)]public class C2G_EnterMapHandler : AMRpcHandler{protected override asyncETTask Run(Session session, C2G_EnterMap request, G2C_EnterMap response, Action reply)
{
Log.Info("--create player--");
Player player= session.GetComponent().Player;//在map服务器上创建战斗Unit,默认第一个Map服务器
IPEndPoint mapAddress = StartConfigComponent.Instance.MapConfigs[0].GetComponent().IPEndPoint;
Log.Info("向Map服务器发送创建玩家信息。Map Address :" + mapAddress.Address + "--" +mapAddress.Port);
Session mapSession= Game.Scene.GetComponent().Get(mapAddress);
M2G_CreateUnit createUnit= (M2G_CreateUnit)await mapSession.Call(new G2M_CreateUnit() { PlayerId = player.Id, GateSessionId =session.InstanceId });
player.UnitId=createUnit.UnitId;
response.UnitId=createUnit.UnitId;// ///************ 数据库demo ************/// //数据库操作对象//DBProxyComponent dbProxy = Game.Scene.GetComponent();// // //保存到数据库//await dbProxy.Save(player);//Log.Info("--保存成功---");// //查询账号是否存在//Player resultd = await dbProxy.Query(player.Id);//Log.Info(MongoHelper.ToJson(resultd));//
// //根据Account账号查找,可能有多个//List results = await dbProxy.Query(_account => _account.Account == player.Account);//Log.Info(results.Count + "");//if (results.Count > 0)//{//Log.Info(MongoHelper.ToJson(results[0]));//}
/************ 数据库demo 分布式服务器中************/
//获取DB服务器地址
IPEndPoint dbAddress = StartConfigComponent.Instance.DBConfig.GetComponent().IPEndPoint;
Log.Info("获取DB服务器地址 :" + dbAddress.Address + "--" +dbAddress.Port);
Session dbSession= Game.Scene.GetComponent().Get(dbAddress);await dbSession.Call(new DBSaveRequest { Component =player});
Log.Info("--保存成功---");
DBQueryResponse dbQueryResponse= (DBQueryResponse)await dbSession.Call(new DBQueryRequest { CollectionName ="Player", Id =player.Id });
Player result=(Player)dbQueryResponse.Component;
Log.Info(MongoHelper.ToJson(result));//序列化查询json,来着 await dbProxy.Query(_account => _account.Account == player.Account); 函数中
ExpressionFilterDefinition filter = new ExpressionFilterDefinition(_account => _account.Account ==player.Account);
IBsonSerializerRegistry serializerRegistry=BsonSerializer.SerializerRegistry;
IBsonSerializer documentSerializer = serializerRegistry.GetSerializer();string json =filter.Render(documentSerializer, serializerRegistry).ToJson();
DBQueryJsonResponse resultsList= (DBQueryJsonResponse)await dbSession.Call(new DBQueryJsonRequest { CollectionName ="Player",Json =json});
List list =resultsList.Components;
Log.Info(list.Count+ "---size");if (list.Count > 0)
{
Log.Info(MongoHelper.ToJson(list[0]));
}
reply();
}
}
}