欢迎回到第2部分的Server2Server
在第1部分中我们做NodeResolverBase,我们称之为主服务器。现在我们需要一种方法来与MasterServer通信, 所以我们要创建一个新类称为IncomingSubServerPeer。 所以创建这个类并实现成员,但是我们会有一个稍微不同的构造函数。我们还将创建一个链接到MasterServer和我们的日志能够添加日志当我们需要的时候。
class IncomingSubServerPeer : ServerPeerBase { private MasterServer _server; private static readonly ILogger Log = LogManager.GetCurrentClassLogger(); public IncomingSubServerPeer(InitRequest request, MasterServer server) : base(request.Protocol, request.PhotonPeer) { _server = server; if(Log.IsDebugEnabled) { Log.DebugFormat("SubServer connected from {0}:{1} - connection id: {2}", RemoteIP, RemotePort, ConnectionId); } } #region Overrides of PeerBase protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { throw new NotImplementedException(); } protected override void OnDisconnect() { throw new NotImplementedException(); } #endregion #region Overrides of ServerPeerBase protected override void OnEvent(IEventData eventData, SendParameters sendParameters) { throw new NotImplementedException(); } protected override void OnOperationResponse(OperationResponse operationResponse, SendParameters sendParameters) { throw new NotImplementedException(); } #endregion }
在这样的情况下,当我们收到一个OperationRequest的时候我们要写一个Log
protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { if(Log.IsDebugEnabled) { Log.DebugFormat("Received operation request from {0} - op code {1}", ConnectionId, operationRequest.OperationCode); } }
当服务器断开连接也写一个日志。
protected override void OnDisconnect() { if(Log.IsDebugEnabled) { Log.DebugFormat("Connection from Sub Server {0} terminated", ConnectionId); } }
当服务器连接上的时候,我们有MasterServer.CreatePeer()
protected override PeerBase CreatePeer(InitRequest initRequest) { if(IsSubServerPeer(initRequest)) { if(Log.IsDebugEnabled) { Log.DebugFormat("Received init request from sub server"); } return new IncomingSubServerPeer(initRequest, this); } return null; }