forked from EvilBeaver/OneScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBslProcessFactory.cs
More file actions
37 lines (32 loc) · 1.33 KB
/
BslProcessFactory.cs
File metadata and controls
37 lines (32 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*----------------------------------------------------------
This Source Code Form is subject to the terms of the
Mozilla Public License, v.2.0. If a copy of the MPL
was not distributed with this file, You can obtain one
at http://mozilla.org/MPL/2.0/.
----------------------------------------------------------*/
using System.Threading;
using OneScript.DependencyInjection;
using OneScript.Execution;
using ExecutionContext = ScriptEngine.Machine.ExecutionContext;
namespace ScriptEngine
{
/// <summary>
/// Типовая фабрика bsl-процессов на базе диспетчера исполнителей
/// </summary>
public class BslProcessFactory : IBslProcessFactory
{
private readonly IServiceContainer _services;
private int _threadIdCounter = 0;
public BslProcessFactory(IServiceContainer services)
{
_services = services;
}
public IBslProcess NewProcess()
{
// Создаем новый контекст со всеми зависимостями
var context = _services.Resolve<ExecutionContext>();
var executors = _services.ResolveEnumerable<IExecutorProvider>();
return new BslProcess(Interlocked.Increment(ref _threadIdCounter), context, executors);
}
}
}