/// <summary> /// Creates a shared memory region view. /// </summary> /// <typeparam name="T">Memory region type.</typeparam> /// <param name="sharedMemoryMapName"></param> /// <param name="sharedMemorySize"></param> /// <returns></returns> public static SharedMemoryRegionView <T> CreateNew <T>(string sharedMemoryMapName, ulong sharedMemorySize) where T : ICodegenProxy, new() { var memoryRegionView = new SharedMemoryRegionView <T>(SharedMemoryMapView.CreateNew(sharedMemoryMapName, sharedMemorySize)); MlosProxyInternal.MemoryRegionInitializer <T> memoryRegionInitializer = default; memoryRegionInitializer.Initialize(memoryRegionView); return(memoryRegionView); }
/// <summary> /// Creates or opens a shared memory region view. /// </summary> /// <typeparam name="T">Memory region type.</typeparam> /// <param name="sharedMemoryMapName"></param> /// <param name="sharedMemorySize"></param> /// <returns></returns> public static SharedMemoryRegionView <T> CreateOrOpen <T>(string sharedMemoryMapName, ulong sharedMemorySize) where T : ICodegenProxy, new() { try { return(new SharedMemoryRegionView <T>(SharedMemoryMapView.OpenExisting(sharedMemoryMapName, sharedMemorySize))); } catch (FileNotFoundException) { var memoryRegionView = new SharedMemoryRegionView <T>(SharedMemoryMapView.CreateNew(sharedMemoryMapName, sharedMemorySize)); MlosProxyInternal.MemoryRegionInitializer <T> memoryRegionInitializer = default; memoryRegionInitializer.Initialize(memoryRegionView); return(memoryRegionView); } }