コード例 #1
0
ファイル: ScanCoordinator.cs プロジェクト: akoltz/ggcbnet
 public static bool IsScanTask(IDistributedTask task)
 {
     return task.TaskTypeId.Equals(GetScanTaskType());
 }
コード例 #2
0
ファイル: ScanCoordinator.cs プロジェクト: akoltz/ggcbnet
        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);
 }