Exemple #1
0
 internal override void Dequeue(int count, SyncMessage primaryMessage)
 {
     //TODO: deal with the arguments and the returns... and count
     lock (queueLock) {
         if (count == 1)
         {
             messageQueue[0].ArgumentIndex = primaryMessage.CollatedArguments.Count;
             primaryMessage.CollatedArguments.AddRange(messageQueue[0].AllArguments);
             primaryMessage.ReturnToSyncMessages.Add(messageQueue[0]);
             messageQueue[0].PrimaryMessage = primaryMessage;
             messageQueue.RemoveAt(0);
         }
         else
         {
             var dequeuedMessages = messageQueue.Take(count);
             foreach (var m in dequeuedMessages)
             {
                 m.PrimaryMessage = primaryMessage;
             }
             if (DelegateArgumentTypes.Count() != 0)
             {
                 var arrayOfArguments = dequeuedMessages.Select((m, i) => {
                     m.ArgumentIndex    = primaryMessage.CollatedArguments.Count;
                     m.ArgumentSubIndex = i;
                     return(m.AllArguments);
                 }).ToArray();
                 primaryMessage.CollatedArguments.AddRange(TransposeAndType(arrayOfArguments));
             }
             primaryMessage.ReturnToSyncMessages.AddRange(dequeuedMessages);
             messageQueue.RemoveRange(0, count);
         }
     }
 }
 internal void Dequeue(int count, List <object> arguments)
 {
     lock (queueLock) {
         if (count == 1)
         {
             arguments.AddRange(messageQueue[0].Arguments);
             messageQueue.RemoveAt(0);
         }
         else
         {
             var arrayOfArguments = messageQueue.Take(count).Select(m => m.Arguments).ToArray();
             if (DelegateArgumentTypes.Count() != 0)
             {
                 arguments.AddRange(TransposeAndType(arrayOfArguments));
             }
             messageQueue.RemoveRange(0, count);
         }
     }
 }