53 lines
2.0 KiB
C#
Raw Permalink Normal View History

2025-01-16 13:24:57 +01:00
using CodexClient.Hooks;
using FileUtils;
using Logging;
using WebUtils;
namespace CodexClient
{
public class CodexNodeFactory
{
private readonly ILog log;
private readonly IFileManager fileManager;
2025-01-16 15:13:16 +01:00
private readonly CodexHooksFactory hooksFactory;
2025-01-16 13:24:57 +01:00
private readonly IHttpFactory httpFactory;
2025-01-16 15:13:16 +01:00
private readonly IProcessControlFactory processControlFactory;
2025-01-16 13:24:57 +01:00
2025-01-16 15:13:16 +01:00
public CodexNodeFactory(ILog log, IFileManager fileManager, CodexHooksFactory hooksFactory, IHttpFactory httpFactory, IProcessControlFactory processControlFactory)
2025-01-16 13:24:57 +01:00
{
this.log = log;
this.fileManager = fileManager;
2025-01-16 15:13:16 +01:00
this.hooksFactory = hooksFactory;
2025-01-16 13:24:57 +01:00
this.httpFactory = httpFactory;
this.processControlFactory = processControlFactory;
}
2025-02-26 14:05:41 +01:00
public CodexNodeFactory(ILog log, HttpFactory httpFactory, string dataDir)
: this(log, new FileManager(log, dataDir), new CodexHooksFactory(), httpFactory, new DoNothingProcessControlFactory())
{
}
2025-01-16 15:13:16 +01:00
public CodexNodeFactory(ILog log, string dataDir)
2025-02-26 14:05:41 +01:00
: this(log, new HttpFactory(log), dataDir)
2025-01-16 15:13:16 +01:00
{
}
2025-01-16 13:24:57 +01:00
public ICodexNode CreateCodexNode(ICodexInstance instance)
{
var processControl = processControlFactory.CreateProcessControl(instance);
var access = new CodexAccess(log, httpFactory, processControl, instance);
2025-01-16 15:13:16 +01:00
var hooks = hooksFactory.CreateHooks(access.GetName());
2025-01-16 13:24:57 +01:00
var marketplaceAccess = CreateMarketplaceAccess(instance, access, hooks);
2025-01-16 13:51:29 +01:00
var node = new CodexNode(log, access, fileManager, marketplaceAccess, hooks);
node.Initialize();
return node;
2025-01-16 13:24:57 +01:00
}
private IMarketplaceAccess CreateMarketplaceAccess(ICodexInstance instance, CodexAccess access, ICodexNodeHooks hooks)
{
if (instance.EthAccount == null) return new MarketplaceUnavailable();
return new MarketplaceAccess(log, access, hooks);
}
}
}