public static bool IsScanTask(IDistributedTask task) { return task.TaskTypeId.Equals(GetScanTaskType()); }
async Task<IDistributedTaskWorker> IDistributedTaskWorkerFactory.CreateInstanceAsync(IDistributedTask task) { Log.TraceInformation("Detected a new scan, creating a scanner"); if (_scanner != null) { throw new InvalidOperationException("This coordinator already has a running scanner"); } var storage = await _storageFactory.CreateInstanceAsync().ConfigureAwait(false); var participationHandle = await task.JoinAsync(this._workerId).ConfigureAwait(false); Log.TraceInformation("Parsing param string: {0}", task.ParamString); ScanTraits traits = ParseTaskParamString(task.ParamString); Log.TraceInformation("Creating a new scanner, workerid={0}, eventId={1}, resultCollection={2}", _workerId, traits.EventId, traits.ResultCollection); _scanner = new MatchScanner( this, participationHandle, storage, _resultsProviderFactory.CreateInstance(traits.GameId), traits, _workerId, _scannerConfig, _startTasksSuspended); if (OnScannerStart != null) { OnScannerStart(_scanner); } return _scanner; }
internal static void TypedInvoke <P>(IDistributedTask <P> instance, P parameter, TaskExecutionInfo executionInfo) { instance.Run(parameter, executionInfo); }