Beispiel #1
0
        public void Send(Command command)
        {
            bool ok;

            lock (m_sync)
            {
                m_commandPipe.Write(ref command, false);
                ok = m_commandPipe.Flush();
            }

            if (!ok)
            {
                m_proactor.SignalMailbox(this);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Send the given Command out across the command-pipe.
        /// </summary>
        /// <param name="cmd">the Command to send</param>
        public void Send(Command cmd)
        {
            bool ok;

            lock (m_sync)
            {
                m_commandPipe.Write(ref cmd, false);
                ok = m_commandPipe.Flush();
            }

            //if (LOG.isDebugEnabled())
            //    LOG.debug( "{} -> {} / {} {}", new Object[] { Thread.currentThread().getName(), cmd_, cmd_.arg , !ok});

            if (!ok)
            {
                m_signaler.Send();
            }
        }
Beispiel #3
0
        public void Send(Command cmd)
        {
            lock (m_sync)
            {
                m_commandPipe.Write(ref cmd, false);
                bool ok = m_commandPipe.Flush();

                if (!ok)
                {
                    Monitor.PulseAll(m_sync);

                    foreach (var signaler in m_signalers)
                    {
                        signaler.Send();
                    }
                }
            }
        }