//first recieve fails not sure why private void Receive() { socket.BeginReceiveFrom(PacketBuffer, 0, BufferSize, SocketFlags.None, ref ClientEndpoint, AsReceive = (ar) => { AsyncBuffer so = (AsyncBuffer)ar.AsyncState; int bytes = socket.EndReceiveFrom(ar, ref ClientEndpoint); socket.BeginReceiveFrom(so.Buffer, 0, BufferSize, SocketFlags.None, ref ClientEndpoint, AsReceive, so); byte[] tempBuff = new byte[bytes]; Array.Copy(so.Buffer, 0, tempBuff, 0, tempBuff.Length); Client TargetClient = null; //Check if client is already connected if (ConnectedClients.Where(x => x.endPoint.Equals(ClientEndpoint)).Count() == 0) { Console.WriteLine("New client connected " + ClientEndpoint.ToString()); TargetClient = new Client(ClientEndpoint); ConnectedClients.Add(TargetClient); } else { TargetClient = ConnectedClients.Where(x => x.endPoint.Equals(ClientEndpoint)).First(); } Packet packet = new Packet(tempBuff); if (packet.IsValid) { Console.WriteLine("Recieved " + packet.ToString()); socket.SendTo(TargetClient.HandlePacket(packet), ClientEndpoint); } }, AsBuffer); }
public GeneratorTestsBase(string logFolderName, string logFileName, int consumerCount) { _logFolderName = logFolderName ?? @"Log"; _logFileName = logFileName; CancellationTokenSource = new CancellationTokenSource(); CancellationTokenSource.Token.Register(() => Log("Cancellation requested.")); Buffer = new AsyncBuffer <TWorkItem>(CancellationTokenSource.Token); Generator = new MyCommandGenerator(CancellationTokenSource); Consumers = Enumerable .Range(0, consumerCount) .Select(n => new MyCommandConsumer <TWorkItem>(Buffer, CancellationTokenSource)) .ToArray(); }
/// <summary> /// Start main application /// </summary> /// <returns>If it was successfull</returns> public bool Start() { Console.WriteLine("Enter a string:"); string line = Console.ReadLine(); Console.WriteLine("Synchronized? (Y/N)"); bool sync = Console.ReadLine().ToLower() == "y"; // What kind of buffer should we create? if (sync) { Buffer = new SyncBuffer<char>(); } else { Buffer = new AsyncBuffer<char>(); } Random random = new Random(); // Create the reader and writer. Reader = new Reader(Buffer, line.Length, random); Writer = new Writer(Buffer, line, random); Thread readerThread = new Thread(new ThreadStart(Reader.Read)); Thread writerThread = new Thread(new ThreadStart(Writer.Write)); // Start the threads. readerThread.Start(); writerThread.Start(); // Wait on main thread for them to complete. readerThread.Join(); writerThread.Join(); // Print result Console.WriteLine("The Write String: " + Writer.Line); Console.WriteLine("The Read String: " + Reader.Line); Console.WriteLine(); return true; }
public MyCommandConsumer(AsyncBuffer <TWorkItem> buffer, CancellationTokenSource cts) { _buffer = buffer; _cancellationTokenSource = cts; }