3 using System.Collections.Generic;
12 private unsafe
void* _nativePtr;
17 private readonly
string _ipcPath;
19 private bool _disposedValue;
20 private bool _isStarted;
22 private readonly List<Client> _clients =
new();
23 private readonly List<Provider> _providers =
new();
32 _ipcPath = ipcPath ??
throw new ArgumentNullException(nameof(ipcPath));
36 _nativePtr = NativeMethods.Datalayer.DLR_systemCreate(
IpcPath.ToSBytePtr());
44 unsafe
void* INative.NativePtr => _nativePtr;
49 internal List<Client> Clients => _clients;
54 internal List<Provider> Providers => _providers;
67 protected virtual void Dispose(
bool disposing)
79 _disposedValue =
true;
100 GC.SuppressFinalize(
this);
106 private void Delete()
110 if (_nativePtr ==
null)
121 NativeMethods.Datalayer.DLR_systemDelete(_nativePtr);
124 _disposedValue =
true;
131 private void DeleteChildren()
134 foreach (var client
in _clients)
141 foreach (var provider
in _providers)
149 #region Public Consts
175 #region Public Properties
187 throw new ObjectDisposedException(Utils.Strings.ErrorObjectDisposed);
204 throw new ObjectDisposedException(Utils.Strings.ErrorObjectDisposed);
222 throw new ObjectDisposedException(Utils.Strings.ErrorObjectDisposed);
227 throw new ArgumentNullException(nameof(value));
232 NativeMethods.Datalayer.DLR_systemSetBfbsPath(_nativePtr, value.ToSBytePtr());
239 #region Public Methods
253 public void Start(
bool startBroker =
false)
257 throw new ObjectDisposedException(Utils.Strings.ErrorObjectDisposed);
262 NativeMethods.Datalayer.DLR_systemStart(_nativePtr, Convert.ToByte(startBroker));
275 throw new ObjectDisposedException(Utils.Strings.ErrorObjectDisposed);
283 NativeMethods.Datalayer.DLR_systemStop(_nativePtr, Convert.ToByte(
true));
299 throw new ObjectDisposedException(Utils.Strings.ErrorObjectDisposed);
302 if (_factory ==
null)
307 throw new InvalidOperationException(
"DatalayerSystem not started");
312 void* factoryPtr = NativeMethods.Datalayer.DLR_systemFactory(_nativePtr);
313 _factory =
new Factory(
this, factoryPtr);
330 throw new ObjectDisposedException(Utils.Strings.ErrorObjectDisposed);
333 if (_converter ==
null)
337 void* converterPtr = NativeMethods.Datalayer.DLR_systemJsonConverter(_nativePtr);
338 _converter =
new Converter(converterPtr);