GoodAI.Core.Memory.MyMemoryBlockSerializer.SaveBlock C# (CSharp) Method

SaveBlock() public method

public SaveBlock ( MyAbstractMemoryBlock memoryBlock ) : void
memoryBlock MyAbstractMemoryBlock
return void
        public void SaveBlock(MyAbstractMemoryBlock memoryBlock)
        {
            int length = m_buffer.Length;
            SizeT size = memoryBlock.GetSize();

            while (size > length)
            {
                length *= 2;
            }

            if (length != m_buffer.Length)
            {
                m_buffer = new byte[length];
            }
            memoryBlock.GetBytes(m_buffer);
            
            string tempFolder = GetTempStorage(memoryBlock.Owner.Owner) + "\\" + GetNodeFolder(memoryBlock.Owner);
            Directory.CreateDirectory(tempFolder);

            string filePath = tempFolder + "\\" + GetFileName(memoryBlock);

            try
            {
                using (var writer = new BinaryWriter(File.Open(filePath, FileMode.Create)))
                {
                    writer.Write(m_buffer, 0, size);
                }
            }
            catch (Exception e)
            {
                MyLog.WARNING.WriteLine("Memory block saving failed (node: {0} (id: {1}), block: {2}): {3}", memoryBlock.Owner.Name,
                    memoryBlock.Owner.Id, memoryBlock.Name, e.Message);
            } 
        }
    }

Usage Example

        public void SaveBlocks(MyNode holder, bool recursive, string path)
        {
            MyMemoryBlockSerializer serializer = new MyMemoryBlockSerializer();

            MemoryAction action = delegate(MyAbstractMemoryBlock memoryBlock)
            {
                if (memoryBlock.Persistable)
                {
                    serializer.SaveBlock(memoryBlock);
                }
            };

            IterateBlocks(holder, true, action);
        }
All Usage Examples Of GoodAI.Core.Memory.MyMemoryBlockSerializer::SaveBlock