Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
 }