public void UnsequentalDequeueWithSubOrdersTest() { var orderedQueue = new OrderedQueue <int>(); int item; orderedQueue.Enqueue(0, 0, 1); orderedQueue.Enqueue(1, 1, 4); Assert.IsTrue(orderedQueue.TryDequeue(out item)); Assert.AreEqual(1, item); Assert.IsFalse(orderedQueue.TryDequeue(out item)); Assert.AreEqual(1, orderedQueue.Size); orderedQueue.Enqueue(1, 2, 5, true); Assert.IsFalse(orderedQueue.TryDequeue(out item)); orderedQueue.Enqueue(1, 0, 3); Assert.IsFalse(orderedQueue.TryDequeue(out item)); orderedQueue.Enqueue(0, 1, 2, true); Assert.IsTrue(orderedQueue.TryDequeue(out item)); Assert.AreEqual(2, item); Assert.IsTrue(orderedQueue.TryDequeue(out item)); Assert.AreEqual(3, item); Assert.IsTrue(orderedQueue.TryDequeue(out item)); Assert.AreEqual(4, item); Assert.IsTrue(orderedQueue.TryDequeue(out item)); Assert.AreEqual(5, item); }
public void DequeueFromEmptryQueueTest() { var orderedQueue = new OrderedQueue <int>(); int item; Assert.IsFalse(orderedQueue.TryDequeue(out item)); }
private SampleStream CreateTrackedStream(string track) { this.Running = true; var oq = new OrderedQueue(); var ct = new SampleStream(credentials, oq) .AddLanguage(Language.English) .AddTrack(track) .AddQueryParameter("result_type", "recent"); return(ct); }
public void EnqueueTest() { var orderedQueue = new OrderedQueue <int>(); Assert.AreEqual(0, orderedQueue.Size); orderedQueue.Enqueue(0, 1); Assert.AreEqual(1, orderedQueue.Size); orderedQueue.Enqueue(2, 3); Assert.AreEqual(2, orderedQueue.Size); orderedQueue.Enqueue(1, 2); Assert.AreEqual(3, orderedQueue.Size); }
public void UnsequentalDequeueTest() { var orderedQueue = new OrderedQueue <int>(); int item; orderedQueue.Enqueue(0, 1); orderedQueue.Enqueue(4, 5); Assert.IsTrue(orderedQueue.TryDequeue(out item)); Assert.AreEqual(1, item); Assert.IsFalse(orderedQueue.TryDequeue(out item)); Assert.AreEqual(1, orderedQueue.Size); orderedQueue.Enqueue(3, 4); Assert.IsFalse(orderedQueue.TryDequeue(out item)); orderedQueue.Enqueue(1, 2); Assert.IsTrue(orderedQueue.TryDequeue(out item)); Assert.AreEqual(2, item); Assert.IsFalse(orderedQueue.TryDequeue(out item)); Assert.AreEqual(2, orderedQueue.Size); orderedQueue.Enqueue(2, 3); Assert.IsTrue(orderedQueue.TryDequeue(out item)); Assert.AreEqual(3, item); Assert.AreEqual(2, orderedQueue.Size); Assert.IsTrue(orderedQueue.TryDequeue(out item)); Assert.AreEqual(4, item); Assert.AreEqual(1, orderedQueue.Size); Assert.IsTrue(orderedQueue.TryDequeue(out item)); Assert.AreEqual(5, item); Assert.AreEqual(0, orderedQueue.Size); }
public SampleStream(ICredentials credentials, OrderedQueue orderedQueue) { Auth.SetCredentials(new Tweetinvi.Models.TwitterCredentials(credentials.ConsumerKey, credentials.ConsumerSecret, credentials.AccessToken, credentials.AccessTokenSecret)); this.Queue = orderedQueue; this.filteredStream = Tweetinvi.Stream.CreateFilteredStream(); }
private ProcessRequest RunProcessRequestProtocol(ClientRequest clientRequest) { if (this.replicaState.ClientTable.TryGetValue(clientRequest.ClientId, out Tuple <int, ClientResponse> clientResponse)) { // Key is in the dictionary if (clientResponse == null || clientResponse.Item1 < 0 || clientRequest.RequestNumber < clientResponse.Item1) { // Duplicate Request: Long forgotten => drop return(ProcessRequest.DROP); } if (clientRequest.RequestNumber == clientResponse.Item1) { // Duplicate Request // If it is in execution.. wait. if (clientResponse.Item2.GetType() == typeof(Executor)) { Executor executor = (Executor)clientResponse.Item2; executor.Executed.WaitOne(); } return(ProcessRequest.LAST_EXECUTION); } // Execute the requests in client's casual order if (clientRequest.RequestNumber != clientResponse.Item1 + 1) { if (!this.replicaState.HandlersClient.ContainsKey(clientRequest.ClientId)) { this.replicaState.HandlersClient.TryAdd( clientRequest.ClientId, new EventWaitHandle(false, EventResetMode.ManualReset)); } this.replicaState.HandlersClient.TryGetValue( clientRequest.ClientId, out EventWaitHandle myHandler); while (clientRequest.RequestNumber != clientResponse.Item1 + 1) { if (clientRequest.RequestNumber > clientResponse.Item1 + 1) { return(ProcessRequest.DROP); } myHandler.WaitOne(); } } } else { // Not in dictionary... Add with value as null this.replicaState.ClientTable.Add(clientRequest.ClientId, new Tuple <int, ClientResponse>(-1, null)); } // Send Prepare Message and waits for f replies. opNumber is the order we agreed upon. int opNumber = this.SendPrepareMessage(clientRequest); Executor clientExecutor = ExecutorFactory.Factory(clientRequest, opNumber); // Add request to queue OrderedQueue.AddRequestToQueue(this.replicaState, clientRequest, clientExecutor); // Wait execution clientExecutor.Executed.WaitOne(); return(ProcessRequest.LAST_EXECUTION); }
public EventScheduler() { this.queue = new OrderedQueue <Event <T> >(); }