示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
            }
        }