SessionStreamDispatcherClientOuter.cs 964 B

1234567891011121314151617181920212223242526
  1. using System;
  2. using System.IO;
  3. namespace ET
  4. {
  5. [SessionStreamDispatcher(SessionStreamDispatcherType.SessionStreamDispatcherClientOuter)]
  6. public class SessionStreamDispatcherClientOuter: ISessionStreamDispatcher
  7. {
  8. public void Dispatch(Session session, MemoryStream memoryStream)
  9. {
  10. ushort opcode = BitConverter.ToUInt16(memoryStream.GetBuffer(), Packet.KcpOpcodeIndex);
  11. Type type = OpcodeTypeComponent.Instance.GetType(opcode);
  12. object message = MessageSerializeHelper.DeserializeFrom(opcode, type, memoryStream);
  13. if (message is IResponse response)
  14. {
  15. session.OnRead(opcode, response);
  16. return;
  17. }
  18. OpcodeHelper.LogMsg(session.DomainZone(), opcode, message);
  19. // 普通消息或者是Rpc请求消息
  20. MessageDispatcherComponent.Instance.Handle(session, opcode, message);
  21. }
  22. }
  23. }