public void BucketQ_SimpleScenarios() { using (BucketQ <int> eventQ = new BucketQ <int>(5, 5)) { for (int connection = 0; connection < 5; connection++) { // Test Add int item = 0; Assert.True(eventQ.Enqueue(connection, 1) == 0); Assert.True(eventQ.Enqueue(connection, 1) == 0); Assert.True(eventQ.Enqueue(connection, 1) == 0); Assert.True(eventQ.Enqueue(connection, 1) == 0); Assert.True(eventQ.Enqueue(connection, 1) == 0); // Fail Add Assert.True(eventQ.Enqueue(connection, 1) == -1); // Test Rem Assert.True(eventQ.TryDequeue(connection, out item)); Assert.True(eventQ.TryDequeue(connection, out item)); Assert.True(eventQ.TryDequeue(connection, out item)); Assert.True(eventQ.TryDequeue(connection, out item)); Assert.True(eventQ.TryDequeue(connection, out item)); // Fail Rem Assert.True(!eventQ.TryDequeue(connection, out item)); // Multiple inserts and removals System.Random r = new System.Random(); int steps = 5; for (int s = 1; s < steps; s++) { for (int i = 0; i < 1000; i++) { var it = r.Next(1, 1000); for (int j = 0; j < s; j++) { Assert.True(eventQ.Enqueue(connection, it + j) == 0); } for (int j = 0; j < s; j++) { int o; Assert.True(eventQ.TryDequeue(connection, out o)); Assert.True(o == (it + j)); } } } } } }
public void Initialize(int receiveQueueSize) { m_IPCQueue = new BucketQ <IPCData>(NetworkParameterConstants.MaximumConnectionsSupported, receiveQueueSize); m_FreeList = new ConnectionFreeList(NetworkParameterConstants.MaximumConnectionsSupported); m_IPCEndPoints = new Dictionary <int, ushort>(); }