예제 #1
0
        public string SendResponse(HttpListenerRequest request)
        {
            // string physicalPath = GetPath() + request.RawUrl;

            if (request.Url.AbsolutePath == "/api/command/")
            {
                // Pull mode
                var     data = new StreamReader(request.InputStream).ReadToEnd();
                XmlItem ret  = Receive(data);
                return(ret.ToString());
            }
            else if (request.Url.AbsolutePath == "/pull/receive/")
            {
                lock (m_pullItems)
                {
                    if (m_pullItems.Count == 0)
                    {
                        return("");
                    }

                    XmlItem data = m_pullItems[0];
                    m_pullItems.RemoveAt(0);
                    return(data.ToString());
                }
            }

            return(string.Format("<HTML><BODY>Unexpected. {0}</BODY></HTML>", DateTime.Now));
        }
예제 #2
0
        private void OnCommandEvent(XmlItem data)
        {
            lock (Clients)
            {
                CheckStillConnected();

                foreach (StateObject so in Clients)
                {
                    string x = data.ToString();
                    Send(so.workSocket, x + "\n");
                }
            }
        }