public override void Callback(IAsyncResult result) { if (_proxy.IsRunning) { _proxy.Socket = (ProxySocket)result.AsyncState; Socket _client_socket = _proxy.Socket.EndAccept(result); ClientEntity client = _client_creator.Handle(_client_socket.RemoteEndPoint as IPEndPoint); client = _client_linker.Handle(client, _client_socket); ClientEntity remote = _client_creator.Handle(_proxy.IpRedirectedStack.Dequeue()); remote = _client_linker.Handle(remote, new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)); AbstractClientReceiveCallback remote_rcv_callback = new AbstractClientReceiveCallback(remote, client, _client_repository, _client_creator, _client_linker, _client_connector, _client_disconnector, _client_sender, ProxyTagEnum.Server); remote = _client_connector.Handle(remote, new ClientConnectCallback(remote, remote_rcv_callback)); // wait remote client to connect while (!remote.IsRunning) { ; } client = _client_receiver.Handle(client, new AbstractClientReceiveCallback(client, remote, _client_repository, _client_creator, _client_linker, _client_connector, _client_disconnector, _client_sender, ProxyTagEnum.Client)); logger.Info("client connected"); _proxy.Socket.BeginAccept(Callback, _proxy.Socket); } }
public async Task <bool> Handle(AbstractClientReceiveCallback callback, NetworkElement element, NetworkContentElement content) { IEnumerable <Type> _handlers = _handlers_type.Where(x => x.GetCustomAttribute <Attribute>().BaseMessage.protocolID == element.protocolID); bool _all_true = true; foreach (Type _handler in _handlers) { _all_true = _all_true && await _handle(_handler, callback, element, content); } return(_all_true); }
private async Task <bool> _handle(Type handler_type, AbstractClientReceiveCallback callback, NetworkElement element, NetworkContentElement content) { if (!GetHandler(element.protocolID)) { return(true); } if (handler_type is null) { return(true); } AbstractMessageHandler handler = Activator.CreateInstance(handler_type, new object[] { callback, element, content }) as AbstractMessageHandler; await AsyncExtension.ExecuteAsync(handler.Handle, handler.EndHandle, handler.Error); return(handler.IsForwardingData); }
private bool _handle(Type handler_type, AbstractClientReceiveCallback callback, string package) { //if (!GetHandler(element.protocolID)) return true; if (handler_type is null) { return(true); } var DofusProxyCallback = (callback as DofusRetroProxyClientReceiveCallback); AbstractMessageHandler handler = Activator.CreateInstance(handler_type, new object[] { callback, package, DofusProxyCallback.Account }) as AbstractMessageHandler; try { handler.Handle(); handler.EndHandle(); } catch (Exception e) { handler.Error(e); } return(handler.IsForwardingData); }
public AbstractMessageHandler(AbstractClientReceiveCallback callback, string package, Account account) { _callback = callback ?? throw new ArgumentNullException(nameof(callback)); _package = package; _account = account; }
public CharacterCreationRequestMessageHandler(AbstractClientReceiveCallback callback, NetworkElement element, NetworkContentElement content) : base(callback, element, content) { }
public IdentificationSuccessMessageHandler(AbstractClientReceiveCallback callback, NetworkElement element, NetworkContentElement content) : base(callback, element, content) { }
public AbstractMessageHandler(AbstractClientReceiveCallback callback, NetworkElement element, NetworkContentElement content) { _callback = callback ?? throw new ArgumentNullException(nameof(callback)); _element = element ?? throw new ArgumentNullException(nameof(element)); _content = content ?? throw new ArgumentNullException(nameof(content)); }
public AuthenticationTicketMessageHandler(AbstractClientReceiveCallback callback, NetworkElement element, NetworkContentElement content) : base(callback, element, content) { }
public ExchangeStartedWithStorageMessageHandler(AbstractClientReceiveCallback callback, NetworkElement element, NetworkContentElement content) : base(callback, element, content) { }
public InteractiveStateMessageHandler(AbstractClientReceiveCallback callback, string package, Account account) : base(callback, package, account) { }
public MapComplementaryInformationsDataMessageHandler(AbstractClientReceiveCallback callback, NetworkElement element, NetworkContentElement content) : base(callback, element, content) { }
public ReloginTokenRequestMessageHandler(AbstractClientReceiveCallback callback, NetworkElement element, NetworkContentElement content) : base(callback, element, content) { }
public bool Handle(AbstractClientReceiveCallback callback, string package) { return(_handle(_handlers_type.FirstOrDefault(x => package.StartsWith(x.GetCustomAttribute <Attribute>().BaseMessage)), callback, package)); }
public CharacterSkillsMessageHandler(AbstractClientReceiveCallback callback, string package, Account account) : base(callback, package, account) { }
public FightInfoStatsMessageHandler(AbstractClientReceiveCallback callback, string package, Account account) : base(callback, package, account) { }
public ServersListMessageHandler(AbstractClientReceiveCallback callback, NetworkElement element, NetworkContentElement content) : base(callback, element, content) { }
public ProtocolRequiredHandler(AbstractClientReceiveCallback callback, NetworkElement element, NetworkContentElement content) : base(callback, element, content) { }
public MapDataMessageHandler(AbstractClientReceiveCallback callback, string package, Account account) : base(callback, package, account) { }
public FightChangePositionMessageHandler(AbstractClientReceiveCallback callback, string package, Account account) : base(callback, package, account) { }