tiesky.com.SharmIpcInternals.ReaderWriterHandler.StartSendProcedure C# (CSharp) Method

StartSendProcedure() private method

private StartSendProcedure ( ) : void
return void
        unsafe void StartSendProcedure()
        {
            lock (lock_q)
            {
                if (inSend)
                    return;

                inSend = true;
            }

            //Task.Run(() =>
            //{
                lock (lock_q)
                {
                    if (toSend == null)
                    {
                        if (q.Count() > 0)
                        {
                            toSend = q.Dequeue();
                            totalBytesInQUeue -= toSend.Length;
                        }
                        else
                        {
                            inSend = false;
                            return;
                        }
                    }
                }

                //here we got smth toSend
                while(true)
                {
                //if (ewh_Writer_ReadyToWrite.WaitOne(2 * 1000))
                    if (ewh_Writer_ReadyToWrite.WaitOne())
                    {
                        ewh_Writer_ReadyToWrite.Reset();
                        //Writing into MMF

                        //Writer_accessor.WriteArray<byte>(0, toSend, 0, toSend.Length);
                        this.WriteBytes(Writer_accessor_ptr, 0, toSend);

                        //Setting signal ready to read
                        ewh_Writer_ReadyToRead.Set();

                        lock (lock_q)
                        {
                            toSend = null;
                            if (q.Count() == 0)
                            {
                                //Console.WriteLine(DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss.fff") + "> Out of thread");
                                inSend = false;
                                return;
                            }
                            toSend = q.Dequeue();
                            totalBytesInQUeue -= toSend.Length;
                        }
                    }
                    //else
                    //{
                    //    Console.WriteLine(DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss.fff") + "> Timeout of sending we must repeat operation");
                    //}
                }

            //});
        }