Skip to content

Commit d1b2a7f

Browse files
committed
More reworking
1 parent 6394400 commit d1b2a7f

File tree

1 file changed

+25
-52
lines changed

1 file changed

+25
-52
lines changed

src/Xamarin.Android.Build.Tasks/Tasks/AsyncTask.cs

Lines changed: 25 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -231,55 +231,14 @@ private void EnqueueMessage (Queue queue, object item, ManualResetEvent resetEve
231231
}
232232
}
233233

234-
private void LogMessages ()
234+
private void LogInternal<T> (Queue queue, Action<T> action, ManualResetEvent resetEvent)
235235
{
236-
lock (logMessageQueue.SyncRoot) {
237-
while (logMessageQueue.Count > 0) {
238-
var args = (BuildMessageEventArgs)logMessageQueue.Dequeue ();
239-
#pragma warning disable 618
240-
Log.LogMessage (args.Importance, args.Message);
241-
#pragma warning restore 618
242-
}
243-
logDataAvailable.Reset ();
244-
}
245-
}
246-
247-
private void LogErrors ()
248-
{
249-
lock (errorMessageQueue.SyncRoot) {
250-
while (errorMessageQueue.Count > 0) {
251-
var args = (BuildErrorEventArgs)errorMessageQueue.Dequeue ();
252-
#pragma warning disable 618
253-
Log.LogCodedError (args.Code, file: args.File, lineNumber: args.LineNumber, message: args.Message);
254-
#pragma warning restore 618
255-
}
256-
errorDataAvailable.Reset ();
257-
}
258-
}
259-
260-
private void LogWarnings ()
261-
{
262-
lock (warningMessageQueue.SyncRoot) {
263-
while (warningMessageQueue.Count > 0) {
264-
var args = (BuildWarningEventArgs)warningMessageQueue.Dequeue ();
265-
#pragma warning disable 618
266-
Log.LogWarning (args.Message);
267-
#pragma warning restore 618
268-
}
269-
warningDataAvailable.Reset ();
270-
}
271-
}
272-
273-
private void LogCustomData ()
274-
{
275-
lock (customMessageQueue.SyncRoot) {
276-
while (customMessageQueue.Count > 0) {
277-
var args = (CustomBuildEventArgs)customMessageQueue.Dequeue ();
278-
#pragma warning disable 618
279-
BuildEngine.LogCustomEvent (args);
280-
#pragma warning restore 618
236+
lock (queue.SyncRoot) {
237+
while (queue.Count > 0) {
238+
var args = (T)queue.Dequeue ();
239+
action (args);
281240
}
282-
customDataAvailable.Reset ();
241+
resetEvent.Reset ();
283242
}
284243
}
285244

@@ -300,16 +259,30 @@ protected void WaitForCompletion ()
300259
var index = (WaitHandleIndex)System.Threading.WaitHandle.WaitAny (handles, TimeSpan.FromMilliseconds (10));
301260
switch (index) {
302261
case WaitHandleIndex.LogDataAvailable:
303-
LogMessages ();
262+
LogInternal<BuildMessageEventArgs> (logMessageQueue, (e) => {
263+
#pragma warning disable 618
264+
Log.LogMessage (e.Importance, e.Message);
265+
#pragma warning restore 618
266+
}, logDataAvailable);
304267
break;
305-
case WaitHandleIndex.ErrorDataAvailable:
306-
LogErrors ();
268+
case WaitHandleIndex.ErrorDataAvailable:
269+
LogInternal<BuildErrorEventArgs> (errorMessageQueue, (e) => {
270+
#pragma warning disable 618
271+
Log.LogCodedError (e.Code, file: e.File, lineNumber: e.LineNumber, message: e.Message);
272+
#pragma warning restore 618
273+
}, errorDataAvailable);
307274
break;
308275
case WaitHandleIndex.WarningDataAvailable:
309-
LogWarnings ();
276+
LogInternal<BuildWarningEventArgs> (warningMessageQueue, (e) => {
277+
#pragma warning disable 618
278+
Log.LogWarning (e.Message);
279+
#pragma warning restore 618
280+
}, warningDataAvailable);
310281
break;
311282
case WaitHandleIndex.CustomDataAvailable:
312-
LogCustomData ();
283+
LogInternal<CustomBuildEventArgs> (customMessageQueue, (e) => {
284+
BuildEngine.LogCustomEvent (e);
285+
}, customDataAvailable);
313286
break;
314287
case WaitHandleIndex.TaskCancelled:
315288
tcs.Cancel ();

0 commit comments

Comments
 (0)