Example #1
0
        public static void SetObjectBuf <T>(T obj)
        {
            byte[] data    = Serialize(obj);
            int    bufSize = data.Length;

            if (bufSize > BufferSize)
            {
                bufSize = 0;
                _sharedMemory.Write(ref bufSize, BufferSizePos);
                throw new Exception($"[IPC] SetObjectBuf size > bufSize: {bufSize / (1024 * 1024)}Mb(object: {typeof(T)})");
            }
            _sharedMemory.Write(ref bufSize, BufferSizePos);
            _sharedMemory.Write(data, BufferPos);
        }
Example #2
0
 private void WriteDirtyRect(BitmapFrame frame, IntPtr buffer, bool offsetFromSource)
 {
     // Write each row as a dirty stripe
     for (var row = frame.DirtyY; row < frame.DirtyY + frame.DirtyHeight; row++)
     {
         var position     = (row * frame.Width * bytesPerPixel) + (frame.DirtyX * bytesPerPixel);
         var bufferOffset = offsetFromSource
                                 ? position
                                 : (row - frame.DirtyY - 1) * frame.DirtyWidth * bytesPerPixel;
         bitmapBuffer.Write(
             buffer + bufferOffset,
             frame.DirtyWidth * bytesPerPixel,
             position
             );
     }
 }
Example #3
0
        public void ReadWrite_Bytes_DataMatches()
        {
            var    name = Guid.NewGuid().ToString();
            Random r    = new Random();

            byte[] data     = new byte[1024];
            byte[] readData = new byte[1024];
            r.NextBytes(data);

            using (var buf = new BufferReadWrite(name, 1024))
                using (var buf2 = new BufferReadWrite(name))
                {
                    buf.Write(data);
                    buf2.Read(readData);

                    for (var i = 0; i < data.Length; i++)
                    {
                        Assert.AreEqual(data[i], readData[i]);
                    }
                }
        }
Example #4
0
        private void button_BufferReadWrite_Write_Click(object sender, EventArgs e)
        {
            int data = Convert.ToInt32(textBox_SharedBuffer.Text);

            sharedBuffer.Write <int>(ref data);
        }