using System; using System.Collections.Generic; using System.Text; using CommonNetwork.Sockets; using CommonLang.Protocol; using RoomService.Net.BsServer; using CommonLang.Log; using RoomService.Net.BsClient; using CommonAI.ZoneClient; using CommonAI.Zone; using CommonLang.IO; using CommonAI.Zone.ZoneEditor; using CommonAI.ZoneServer; using CommonLang.Concurrent; using CommonNetwork.Net; using CommonLang.Property; using CommonAIClient; using CommonAI; namespace CommonAIClient.Client { public class BattleClientDirect : BattleClient, INetSessionListener { private static Logger log = LoggerFactory.GetLogger("BattleClientDirect"); private INetSession session; public override INetSession Session { get { return session; } } public BattleClientDirect( EditorTemplates data_root, MessageFactoryGenerator msgFactory, PlayerWillConnectResponseB2R room, PlayerWillConnectRequestR2B testToken, string token) : base(data_root, msgFactory, room, testToken, token) { INetSession netSession = ReflectionUtil.CreateInterface(room.Room.NetDriverString); if (netSession == null) { throw new Exception("Invalid NetDriver : " + room.Room.NetDriverString); } this.session = netSession; } protected override void Disposing() { this.Stop(); base.Disposing(); } public override void Start() { session.Open(room.Room.ClientConnectString, new SynchronizedBattleCodec(base.DataRoot.Templates), this); } public override void Stop() { session.Close(); } //---------------------------------------------------------------------------------------------------- void INetSessionListener.sessionOpened(INetSession session) { base.callback_sessionOpened(session); } void INetSessionListener.sessionClosed(INetSession session) { base.callback_sessionClosed(session); } void INetSessionListener.messageReceived(INetSession session, object data) { base.callback_messageReceived(session, data); } void INetSessionListener.messageSent(INetSession session, object data) { base.callback_messageSent(session, data); } void INetSessionListener.onError(INetSession session, Exception err) { base.callback_onError(session, err); } } }