public bool Initialize() { // var len = CSenderNameLength * CMaxSenders; var len = CSenderNameLength * MaxSenders; FSenderNamesMap = MemoryMappedFile.CreateOrOpen(CSenderNamesHandle, len); //add sendername to list of senders if (AddNameToSendersList(FSenderName)) { //write sender description var desc = FTextureDesc.ToByteArray(); FSenderDescriptionMap = MemoryMappedFile.CreateNew(FSenderName, desc.Length); using (var vs = FSenderDescriptionMap.CreateViewStream()) vs.Write(desc, 0, desc.Length); //If we are the first/only sender, create a new ActiveSenderName map. //This is a separate shared memory containing just a sender name //that receivers can use to retrieve the current active Sender. FActiveSenderMap = MemoryMappedFile.CreateOrOpen(CActiveSenderHandle, CSenderNameLength); using (var vs = FActiveSenderMap.CreateViewStream()) { var firstByte = vs.ReadByte(); if (firstByte == 0) //no active sender yet { vs.Position = 0; vs.Write(GetNameBytes(FSenderName), 0, CSenderNameLength); } } return(true); } return(false); }
public bool Initialize() { if (AddNameToSendersList(FSenderName)) { FSharedMemory = MemoryMappedFile.CreateNew(FSenderName, 280); FSharedMemoryVS = FSharedMemory.CreateViewStream(); var nameBytes = Encoding.Unicode.GetBytes(FSenderName); Array.Copy(nameBytes, 0, FTextureDesc.Description, 0, nameBytes.Length); var desc = FTextureDesc.ToByteArray(); FSharedMemoryVS.Write(desc, 0, desc.Length); return(true); } return(false); }