예제 #1
0
    public void OnConnected(IAsyncResult iar)
    {
        StateObj state = (StateObj)iar.AsyncState;

        if (state != null)
        {
            state.OnConnect(state);
        }
    }
예제 #2
0
파일: MaxAmp2.cs 프로젝트: maximkha/mcs
            private void HandlePost(StateObj State, string S, string location)
            {
                string URL = ProcessUrl(location).Replace(" ", String.Empty);
                Dictionary <string, string> PostParams = new Dictionary <string, string>();
                string Location = S.Substring(5, S.IndexOf(' ', S.IndexOf(' ') + 1) - 4);

                Console.WriteLine("Post");

                string Str = S.Substring(5);

                Console.WriteLine("Trimmed!");
                string[] Lines = Str.Split('\n');

                int i;

                for (i = 0; i < Lines.Length; i++)
                {
                    if (string.IsNullOrWhiteSpace(Lines[i]))
                    //if (lines[i].Length == 0)          //or maybe this suits better..
                    //if (lines[i].Equals(string.Empty)) //or this
                    {
                        //Console.WriteLine(i);
                        break;
                    }
                    //Console.WriteLine(i);
                }


                if (i != Lines.Length - 1)
                {
                    //Next Line should be the one with post data
                    Console.WriteLine(Lines[i + 1]);
                    Console.WriteLine("-----------");
                    string[] PostParameters = Lines[i + 1].Replace("+", " ").Split('&');

                    foreach (string PostParameter in PostParameters)
                    {
                        string[] KeyAndValue = PostParameter.Split('=');
                        PostParams.Add(KeyAndValue[0], KeyAndValue[1]);
                    }

                    foreach (KeyValuePair <string, string> kvp in PostParams)
                    {
                        Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
                    }
                    //Console.WriteLine(generateJSON(PostParams));
                    Console.WriteLine("URL:" + URL + " " + Virtdirs.ContainsKey(URL));
                    if (Virtdirs.ContainsKey(URL))
                    {
                        //returnText(State, CallVirtDir(ProcessUrl(cr.RawUrl), Hreq), "text/html");
                        PrevReq Hreq = new PrevReq(URL, State.Client.RemoteEndPoint.ToString(), State.S.ToString(), "POST", PostParams);
                        string  text = CallVirtDir(URL, Hreq);
                        SendText(State, GenerateHeader("HTTP/1.1 200 OK", "text/html", Encoding.ASCII.GetByteCount(text)) + text);
                    }
                }
            }
예제 #3
0
    void HandleMsg(StateObj state)
    {
        UITools.log("receive msg compelete and decode msg ---> recever : ");
        MsgUnPacker unpacker = MsgUtils.DeserializerMsg(state.RecvBuff.ToByteArray());

        unpacker.MsgType     = state.MsgType;
        unpacker.Receiver    = state.Receiver;
        unpacker.RecvHandler = state.RecvHandler;
        handerMgr.HandleMsg(unpacker);
    }
예제 #4
0
파일: MaxAmp2.cs 프로젝트: maximkha/mcs
            private void ReadClient(IAsyncResult ar)
            {
                try
                {
                    //We Shoulden't get binary data so use strings!!
                    string   Request = string.Empty;
                    StateObj State   = (StateObj)ar.AsyncState;
                    Socket   Client  = State.Client;

                    int Br = Client.EndReceive(ar);

                    if (Br > 0)
                    {
                        State.S.Append(Encoding.ASCII.GetString(State.Buffer, 0, Br));
                        Request = Encoding.ASCII.GetString(State.Buffer);
                        bool Done = false;

                        string[] Lines = Request.Split('\n');
                        for (int i = 0; i < Lines.Length; i++)
                        {
                            Lines[i] = new string(Lines[i].Where(c => char.IsLetter(c) || char.IsDigit(c)).ToArray());
                            // Line is empty
                            if (Lines[i] == null || Lines[i] == "")
                            {
                                Done = true;
                                //Console.WriteLine("done");
                            }
                        }

                        if (Done)
                        {
                            //Done
                            //Console.WriteLine(Request);
                            //Console.WriteLine("------------------------------------");
                            Console.WriteLine(State.S.ToString());
                            HandleClient(State);
                        }
                        else
                        {                         //Not done
                                                  //Console.WriteLine(Request);
                            Client.BeginReceive(State.Buffer, 0, State.BL, 0,
                                                new AsyncCallback(ReadClient), State);
                        }
                    }
                }
                catch (Exception E)
                {
                    ErrorArg ErA;
                    ErA.Location    = "MAS2.ReadClient(IAsyncResult ar)";
                    ErA.Severity    = 2;                 //Lower Severity more important
                    ErA.TimeAndDate = DateTime.Now.ToString("MMMM,dd,yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
                    ErA.Error       = E.ToString();
                    HandleError(ErA, "RC");
                }
            }
예제 #5
0
 public void CloseConnection(StateObj state)
 {
     try
     {
         tcpClient.Client.BeginDisconnect(true, new AsyncCallback(OnDisConnect), state);
     }
     catch (Exception)
     {
         UITools.logError("Close Connection error");
     }
 }
예제 #6
0
파일: ThreadPoolTest.cs 프로젝트: q2git/VS
    static void AnotherTask(object obj)
    {
        StateObj stObj = obj as StateObj;
        int      n     = stObj.n;

        for (int i = 1; i < n; i++)
        {
            Console.Write("@");
        }
        Console.WriteLine(n);
        stObj.RetVal = n;
    }
예제 #7
0
    public void Send(MsgPacker msg)
    {
        StateObj _state = new StateObj();

        _state.MsgType    = msg.MsgType;
        _state.Receiver   = msg.Receiver;
        _state.IsNeedRecv = msg.IsNeedRecv;
        _state.OnSend     = OnSend;
        _state.OnReceive  = OnReceiveData;
        _state.SendBuff   = MsgUtils.SerializerMsg(msg);
        clientSocket.Send(_state);
    }
예제 #8
0
 public bool OpenPhase()
 {
     if (_server.Connected)
     {
         _NS = _server.GetStream();
         StateObj state = new StateObj(_server.Client);
         _server.Client.BeginReceive(state.buffer, 0, StateObj.BufferSize, SocketFlags.None, new AsyncCallback(OnReceive), state);
         _status = "Playing";
         return true;
     }
     else
         return false;
 }
예제 #9
0
파일: ThreadPoolTest.cs 프로젝트: q2git/VS
    static void Main()
    {
        StateObj StObj1 = new StateObj();
        StateObj StObj2 = new StateObj();

        StObj1.n = 10;
        StObj2.n = 20;

        // ╫╚хннЯее╤с
        ThreadPool.QueueUserWorkItem(
            new WaitCallback(SomeOtherTask), StObj1);
        ThreadPool.QueueUserWorkItem(
            new WaitCallback(AnotherTask), StObj2);
        Thread.Sleep(1000);
    }
예제 #10
0
파일: MaxAmp2.cs 프로젝트: maximkha/mcs
            private void AcceptClient(IAsyncResult ar)
            {
                //Main thread can continue
                ThreadSignal.Set();

                Socket   Server = (Socket)ar.AsyncState;               //Cast to type socket
                Socket   Client = Server.EndAccept(ar);
                StateObj state  = new StateObj();

                Console.WriteLine("Client: " + Client.RemoteEndPoint);

                state.Client = Client;
                Client.BeginReceive(state.Buffer, 0, state.BL, 0,
                                    new AsyncCallback(ReadClient), state);
            }
예제 #11
0
 public void ConnectServer(string ip, int port, StateObj state)
 {
     if (!isInit)
     {
         UITools.logError("Init ClientSocket first");
         return;
     }
     state.Client = tcpClient.Client;
     try
     {
         tcpClient.BeginConnect(ip, port, new AsyncCallback(OnConnected), state);
     }
     catch (Exception)
     {
         state.OnConnectError(state);
     }
 }
예제 #12
0
파일: MaxAmp2.cs 프로젝트: maximkha/mcs
            private void HandleClient(StateObj State)
            {
                try
                {
                    //Console.WriteLine("0");
                    string S = State.S.ToString();
                    //Console.WriteLine("Current Buffer:");
                    //Console.WriteLine(S);
                    //Console.WriteLine("END");

                    if (S.Substring(0, 3) == "GET")
                    {
                        string Location = S.Substring(4, S.IndexOf(' ', S.IndexOf(' ') + 1) - 4);
                        Console.WriteLine(Location);
                        Console.WriteLine("------------------------------------");
                        HandleFileReq(State, Location);
                        string e = GenError(404);
                        SendText(State, e);
                    }
                    if (S.Substring(0, 4) == "POST")
                    {
                        string Location = S.Substring(4, S.IndexOf(' ', S.IndexOf(' ') + 1) - 4);
                        Console.WriteLine(Location);
                        Console.WriteLine("------------------------------------");
                        HandlePost(State, S, Location);
                    }
                    else
                    {
                        Console.WriteLine("------------------------------------");
                        Console.Write("ERROR: 501");
                        string e = GenError(501);
                        SendText(State, e);
                    }
                }
                catch (Exception E)
                {
                    ErrorArg ErA;
                    ErA.Location    = "MAS2.HandleClient(StateObj State)";
                    ErA.Severity    = 3;                 //Lower Severity more important
                    ErA.TimeAndDate = DateTime.Now.ToString("MMMM,dd,yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
                    ErA.Error       = E.ToString();
                    HandleError(ErA, "HC");
                }
            }
예제 #13
0
 public void Send(StateObj state)
 {
     byte[] buff = state.SendBuff;
     UITools.log("send Buff size : " + buff.Length);
     if (state == null)
     {
         state = new StateObj();
     }
     // state.Msg = msg;
     state.Client = tcpClient.Client;
     try
     {
         tcpClient.Client.BeginSend(buff, 0, buff.Length, 0, new AsyncCallback(OnSendCallBack), state);
     }
     catch (Exception e)
     {
         UITools.log("send data timeout...." + e.Message);
     }
 }
        private bool validateForm(StateObj obj, out string errorMsg)
        {
            var sb       = new StringBuilder();
            var errCount = 0;
            var exist    = repoState.AllEager(f => f.STATECODE == obj.STATECODE && f.COUNTRYCODE == f.COUNTRYCODE).FirstOrDefault();

            if (exist != null)
            {
                sb.AppendLine("State Code Already Exist for the selected Country");
                errCount++;
            }

            if (errCount > 0)
            {
                errorMsg = sb.ToString();
                return(true);
            }
            errorMsg = sb.ToString();
            return(false);
        }
예제 #15
0
    private void OnSendCallBack(IAsyncResult iar)
    {
        StateObj state = (StateObj)iar.AsyncState;

        state.OnSend(state);
        if (state.IsNeedRecv)
        {
            try
            {
                state.Client.BeginReceive(state.RecvTempBuff, 0, state.RecvTempBuff.Length, 0, new AsyncCallback(OnReceive), state);
            }
            catch (Exception)
            {
                state.OnRecvError(state);
            }
        }
        else
        {
            state.OnReceive(state);
        }
    }
예제 #16
0
파일: MaxAmp2.cs 프로젝트: maximkha/mcs
 private void SendTextFile(StateObj State, String Locs)
 {
     try
     {
         Console.WriteLine("Text transfer was used");
         Console.WriteLine("------------------------------------");
         string text = File.ReadAllText(Locs);
         string Answer;
         Answer = GenerateHeader("HTTP/1.1 200 OK", GetType(Path.GetExtension(Locs)), Encoding.ASCII.GetByteCount(text)) + text;
         SendText(State, Answer);
     }
     catch (Exception E)
     {
         ErrorArg ErA;
         ErA.Location    = "MAS2.SendTextFile(StateObj State, String Locs)";
         ErA.Severity    = 3;                 //Lower Severity more important
         ErA.TimeAndDate = DateTime.Now.ToString("MMMM,dd,yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
         ErA.Error       = E.ToString();
         HandleError(ErA, "STF");
     }
 }
        public void TimeoutFunctionality()
        {
            var stateObj = new StateObj();

            ThreadPool.RegisterWaitForSingleObject(stateObj.Handle, (state, isTimedOut) =>
            {

                if (!isTimedOut) return;

                Trace.WriteLine("timeout");

                var rh = (StateObj)state;
                rh.Handle.Set();
                rh.Aborted = true;

            }, stateObj, 1000, true);

            bool aborted = stateObj.Handle.WaitOne();


        }
예제 #18
0
        /// <summary>
        /// method with strings to see in the label
        /// </summary>
        /// <param name="sender"></param>
        private void DisplayUI(object sender)
        {
            StateObj st = (StateObj)sender;

            lblCronometro.Invoke((MethodInvoker) delegate
            { //the interface says that it's ready to riceve the object
                // Running on the UI thread
                lblCronometro.Text = st.Data;
                sStatus.Text       = st.Alert + " " + st.Message;
                if (st.isAlarm)
                {
                    if (MessageBox.Show("Vuoi continuare? \nyes/ reset app, no/close app", "Finito", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                    {
                        Application.Exit(); //exit the application
                    }
                    else
                    {
                        clearobject(); //method to clear every slot in the program
                    }
                }
            });
        }
예제 #19
0
파일: MaxAmp2.cs 프로젝트: maximkha/mcs
            private string GetDir(StateObj State, String Locs)
            {
                try
                {
                    StringBuilder builder = new StringBuilder();
                    builder.Append("<html>");
                    builder.Append("<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head>");
                    builder.Append("<body><ul>");

                    var dirs = Directory.GetDirectories(Locs);
                    foreach (var d in dirs)
                    {
                        var link = d.Replace(RootPath, "").Replace('\\', '/');
                        builder.Append("<li>&lt;DIR&gt; <a href=\"" + link + "\">" + Path.GetFileName(d) + "</a></li>");
                    }

                    var files = Directory.GetFiles(Locs);
                    foreach (var f in files)
                    {
                        var link = f.Replace(RootPath, "").Replace('\\', '/');
                        builder.Append("<li><a href=\"" + link + "\">" + Path.GetFileName(f) + "</a></li>");
                    }

                    builder.Append("</ul></body></html>");

                    return(builder.ToString());
                }
                catch (Exception E)
                {
                    ErrorArg ErA;
                    ErA.Location    = "MAS2.GetDir(StateObj State, String Locs)";
                    ErA.Severity    = 3;                 //Lower Severity more important
                    ErA.TimeAndDate = DateTime.Now.ToString("MMMM,dd,yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
                    ErA.Error       = E.ToString();
                    HandleError(ErA, "GD");
                    return("MAS2 - ERROR");
                }
            }
예제 #20
0
파일: MaxAmp2.cs 프로젝트: maximkha/mcs
            private void SendText(StateObj State, string M)
            {
                Socket Client = State.Client;

                Byte[] SendBuffer = Encoding.ASCII.GetBytes(M);
                try
                {
                    Client.Send(SendBuffer);
                    Client.Shutdown(SocketShutdown.Both);
                    Client.Close();                     //Disposes for us

                    //Client.Dispose();
                }
                catch (Exception E)
                {
                    ErrorArg ErA;
                    ErA.Location    = "MAS2.SendText(StateObj State, string M)";
                    ErA.Severity    = 2;                 //Lower Severity more important
                    ErA.TimeAndDate = DateTime.Now.ToString("MMMM,dd,yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
                    ErA.Error       = E.ToString();
                    HandleError(ErA, "ST");
                }
            }
예제 #21
0
    private void OnReceive(IAsyncResult iar)
    {
        StateObj state = (StateObj)iar.AsyncState;
        //读取的消息总长度
        int len = state.Client.EndReceive(iar);

        if (len < 4)
        {
            UITools.logError("invaild msg");
            state.OnRecvError(state);
            return;
        }
        byte[] buff       = state.RecvTempBuff;
        int    msgRealLen = MsgUtils.DecodeMsgRealLen(buff, 0, 4);

        UITools.log("msg real length : " + msgRealLen);
        state.RecvLen = msgRealLen;
        // state.RecvBuff.addRange<byte>(buff, AppConst.MsgHeadLen, len - 4);
        state.RecvBuff.Write(buff, AppConst.MsgHeadLen, len - AppConst.MsgHeadLen);

        if (state.RecvLen - state.RecvBuff.Length > 0)
        {
            try
            {
                state.Client.BeginReceive(state.RecvTempBuff, 0, state.RecvTempBuff.Length, 0, new AsyncCallback(OnReceiveRestData), state);
            }
            catch (Exception)
            {
                state.OnRecvError(state);
                UITools.log("receive data timeout....");
            }
        }
        else
        {
            state.OnReceive(state);
        }
    }
예제 #22
0
        /// <summary>
        /// Es wurden Daten gelesen
        /// </summary>
        /// <param name="ar"></param>
        private void ReadCallback(IAsyncResult ar)
        {
            try
            {
                int read;
                lock (_SerialPortLock) {
                    if (_port.IsOpen)
                    {
                        read = _port.BaseStream.EndRead(ar);
                        StateObj state = (StateObj)ar.AsyncState;
                        OnDataReceived?.Invoke(state.data, read);
                    }
                }

                StartRead();
            }
            //Die Verbindung wurde beendet
            catch (IOException) {
                OnConnectionClosed?.Invoke(this);
                //_port.Close();
            }
            catch (Exception)
            { }
        }
예제 #23
0
 void OnSend(StateObj state)
 {
     UITools.log("send msg compelete and waitFor receive");
 }
예제 #24
0
 void OnDisConnect(StateObj state)
 {
     isConnect = false;
 }
예제 #25
0
 public void OnConnect(StateObj state)
 {
     UITools.log("Connect ro Server and start send msg");
     isConnect = true;
 }
예제 #26
0
 public ActorWithStashSpec()
 {
     _state = new StateObj(this);
 }
예제 #27
0
 public RespawnEvent(StateObj checkpoint, float maxHealth)
     : base("OnRespawn")
 {
     this.checkpoint = checkpoint;
     this.maxHealth = maxHealth;
 }
예제 #28
0
 // Properties
 // Métodos
 /** Creates a new instance of ClasseBase */
 public ClasseBase()
 {
     state = StateObj.stLimpo;
 }
예제 #29
0
 public void deletar()
 {
     state = StateObj.stExcluir;
 }
예제 #30
0
 public void editar()
 {
     state = StateObj.stEditar;
 }
예제 #31
0
 public void novo()
 {
     state = StateObj.stNovo;
 }
예제 #32
0
 // Properties
 // Métodos
 /** Creates a new instance of ClasseBase */
 public ClasseBase()
 {
     state = StateObj.stLimpo;
 }
예제 #33
0
 void OnReceiveData(StateObj state)
 {
     UITools.log("add msg to eventQueue");
     eventQueue.Add(state);
 }
예제 #34
0
 public void novo()
 {
     state = StateObj.stNovo;
 }
예제 #35
0
 public void editar()
 {
     state = StateObj.stEditar;
 }
예제 #36
0
파일: Sock.cs 프로젝트: othane/kowhai
 public void StartAsyncReceives(byte[] buffer, int size)
 {
     StateObj state = new StateObj(buffer, size);
     sock.BeginReceive(buffer, 0, size, SocketFlags.None, new AsyncCallback(ReceiveCallback), state);
 }
예제 #37
0
 public void deletar()
 {
     state = StateObj.stExcluir;
 }
예제 #38
0
 public RespawnEvent(StateObj checkpoint, float maxHealth) : base("OnRespawn")
 {
     this.checkpoint = checkpoint;
     this.maxHealth  = maxHealth;
 }
예제 #39
0
        /// <summary>
        /// bắt đầu nhận thông tin từ server
        /// </summary>
        /// <returns></returns>
        public bool OpenPhase()
        {
            if (_server.Connected)
            {

                //_NS = _server.GetStream();
                //_NS.Write(_ENCODE.GetBytes("echo ..."), 0, 512);
                StateObj state = new StateObj(_server.Client);
                _server.Client.BeginReceive(state.buffer, 0, StateObj.BufferSize, SocketFlags.None, new AsyncCallback(OnReceive), state);

                return true;
            }
            else
                return false;
        }
예제 #40
0
 public ActorWithStashSpec()
 {
     _state = new StateObj(this);
 }
예제 #41
0
파일: Serial.cs 프로젝트: gnux/CSExtensions
 private void StartRead()
 {
     StateObj state = new StateObj ();
     state.data = new byte[BUFFER_SIZE];
     lock (_port)
         _port.BaseStream.BeginRead (state.data, 0, BUFFER_SIZE, new AsyncCallback (ReadCallback), state);
 }