public CoCRemoteClient(CoCServer server, Socket connection, NetworkManagerAsyncSettings settings) { _server = server; Connection = connection; Avatar = new Avatar(); NetworkManager = new NetworkManagerAsync(connection, settings); NetworkManager.MessageReceived += OnMessageReceived; }
/// <summary> /// Initializes a new instance of the <see cref="NetworkManagerAsync"/> class. /// </summary> /// <param name="connection"><see cref="Socket"/> to wrap.</param> /// <exception cref="ArgumentNullException"/> public NetworkManagerAsync(Socket connection) { if (connection == null) throw new ArgumentNullException("connection"); Connection = connection; Settings = new NetworkManagerAsyncSettings(); // default settings CoCCrypto = new CoCCrypto(); ReceiveEventPool = new SocketAsyncEventArgsPool(25); SendEventPool = new SocketAsyncEventArgsPool(25); SetAsyncOperationPools(); StartReceive(ReceiveEventPool.Pop()); }
/// <summary> /// Initializes a new instance of the <see cref="NetworkManagerAsync"/> class. /// </summary> /// <param name="connection"><see cref="Socket"/> to wrap.</param> /// <exception cref="ArgumentNullException"/> public NetworkManagerAsync(Socket connection) { if (connection == null) { throw new ArgumentNullException("connection"); } Connection = connection; Settings = new NetworkManagerAsyncSettings(); // default settings CoCCrypto = new CoCCrypto(); ReceiveEventPool = new SocketAsyncEventArgsPool(25); SendEventPool = new SocketAsyncEventArgsPool(25); SetAsyncOperationPools(); StartReceive(ReceiveEventPool.Pop()); }
/// <summary> /// Initializes a new instance of the <see cref="NetworkManagerAsync"/> class /// with the specified <see cref="Socket"/> and <see cref="NetworkManagerAsyncSettings"/>. /// </summary> /// <param name="connection"><see cref="Socket"/> instance.</param> /// <param name="settings"> /// <see cref="NetworkManagerAsyncSettings"/> instance for better <see cref="SocketAsyncEventArgs"/> /// object management. /// </param> /// <exception cref="ArgumentNullException"><paramref name="connection"/> is null.</exception> /// <exception cref="ArgumentNullException"><paramref name="settings"/> is null.</exception> public NetworkManagerAsync(Socket connection, NetworkManagerAsyncSettings settings) { if (connection == null) throw new ArgumentNullException("connection"); if (settings == null) throw new ArgumentNullException("settings"); Connection = connection; Settings = settings; Statistics = new NetworkManagerAsyncStatistics(); Crypto = new Crypto8(MessageDirection.Client, Crypto8.StandardKeyPair); //TODO: intiate as server _receivePool = Settings.ReceivePool; _sendPool = Settings.SendPool; StartReceive(_receivePool.Pop()); }
public CoCServer() { _settings = new NetworkManagerAsyncSettings(50, 50); _listener = new Socket(SocketType.Stream, ProtocolType.Tcp); _acceptPool = new SocketAsyncEventArgsPool(100); AvatarManager = new AvatarManager(); DataManager = new DataManager(); Clients = new List<CoCRemoteClient>(); MessageHandlers = new Dictionary<ushort, MessageHandler>(); CommandHandlers = new Dictionary<int, CommandHandler>(); LoginMessageHandlers.RegisterLoginMessageHandlers(this); InGameMessageHandlers.RegisterInGameMessageHandlers(this); BuildingCommandHandlers.RegisterBuildingCommandHandlers(this); AvatarManager.LoadAllAvatars(); }
public CoCProxyClient(Socket client, Socket server, NetworkManagerAsyncSettings settings) { // client connection is initiated with standard keys because we are acting as the server ClientConnection = new NetworkManagerAsync(client, settings); ClientConnection.MessageReceived += ClientReceived; var publicKeyS = Utils.BytesToString(ClientConnection.Crypto.KeyPair.PublicKey); var privateKeyS = Utils.BytesToString(ClientConnection.Crypto.KeyPair.PrivateKey); Console.WriteLine("Acting as server with standard \n\tpublickey: {0} \n\tprivatekey: {1}", publicKeyS, privateKeyS); // server connection is initiated with generated keys because we are acting as the client ServerConnection = new NetworkManagerAsync(server, settings); ServerConnection.Crypto = new Crypto8(MessageDirection.Server); ServerConnection.Crypto.UpdateSharedKey(Crypto8.SupercellPublicKey); // use supercell's public key ServerConnection.MessageReceived += ServerReceived; var publicKeyC = Utils.BytesToString(ServerConnection.Crypto.KeyPair.PublicKey); var privateKeyC = Utils.BytesToString(ServerConnection.Crypto.KeyPair.PrivateKey); Console.WriteLine("Acting as client with generated \n\tpublickey: {0} \n\tprivatekey: {1}", publicKeyC, privateKeyC); }
public CoCProxy() { Connections = new List<CoCProxyClient>(); Settings = new NetworkManagerAsyncSettings(); _listener = new Socket(SocketType.Stream, ProtocolType.Tcp); }