Ejemplo n.º 1
0
        /// <summary>
        /// düşen datayı yakalayacan metot
        /// </summary>
        /// <param name="server"></param>
        /// <param name="e"></param>
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            try
            {
                TcpResponseModel tcpResponseModel = new TcpResponseModel()
                {
                    Result = "OK"
                };
                BeetleX.Buffers.PipeStream pipeStream = e.Stream.ToPipeStream();
                using (MemoryStream memoryStream = new MemoryStream(pipeStream.FirstBuffer.Data)) //pipeStream1.LastBuffer.Data
                    using (StreamReader reader = new StreamReader(memoryStream))
                    {
                        var data = reader.ReadToEnd();
                        if (!string.IsNullOrEmpty(data))
                        {
                            TcpInit.GetIntance().TcpDataReceived(data, null);
                        }

                        pipeStream.Write(@"{""result"":""OK""}!");
                        e.Session.Stream.Flush();
                        base.SessionReceive(server, e);
                    }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"{ex + "TcpConsumer/SessionReceive"}");
            }
        }
Ejemplo n.º 2
0
 public void SessionReceive(SessionReceiveEventArgs e)
 {
     if (e.Session.Packet != null)
     {
         try
         {
             e.Session.Packet.Decode(e.Session, e.Stream);
         }
         catch (Exception e_)
         {
             if (EnableLog(LogType.Error))
             {
                 Error(e_, e.Session, "{0} session  buffer decoding error! ", e.Session.RemoteEndPoint);
             }
             e.Session.Dispose();
         }
     }
     else
     {
         try
         {
             if (Handler != null)
             {
                 Handler.SessionReceive(e.Server, e);
             }
         }
         catch (Exception e_)
         {
             if (EnableLog(LogType.Error))
             {
                 Error(e_, e.Session, "{0} session  buffer process error! ", e.Session.RemoteEndPoint);
             }
         }
     }
 }
Ejemplo n.º 3
0
 public virtual void SessionReceive(IServer server, SessionReceiveEventArgs e)
 {
     if (server.Options.SessionTimeOut > 0)
     {
         server.UpdateSession(e.Session);
     }
 }
Ejemplo n.º 4
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            base.SessionReceive(server, e);
            PipeStream pipeStream = e.Session.Stream.ToPipeStream();
            HttpToken  token      = (HttpToken)e.Session.Tag;

            OnProcess(pipeStream, token, e.Session);
        }
 public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
 {
     e.Session.Stream.ToPipeStream().WriteLine(
         $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} LTMCompanyName.YoyoCmsTemplate Migrator"
         );
     e.Session.Stream.Flush();
     base.SessionReceive(server, e);
 }
Ejemplo n.º 6
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            string name = e.Stream.ToPipeStream().ReadLine();

            Console.WriteLine(name);
            e.Session.Stream.ToPipeStream().WriteLine("hello " + name);
            e.Session.Stream.Flush();
            base.SessionReceive(server, e);
        }
Ejemplo n.º 7
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            var request    = GetRequest(e.Session);
            var pipeStream = e.Stream.ToPipeStream();

            if (LoadRequest(request, pipeStream) == RequestStatus.Completed)
            {
                OnCompleted(request, e.Session);
            }
        }
Ejemplo n.º 8
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            base.SessionReceive(server, e);
            var stream = e.Stream.ToPipeStream();

            if (stream.TryReadLine(out string line))
            {
                stream.WriteLine(line);
                stream.Flush();
            }
        }
Ejemplo n.º 9
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            var pipeStream = e.Stream.ToPipeStream();

            if (pipeStream.TryReadLine(out string name))
            {
                Console.WriteLine(name);
                e.Session.Stream.ToPipeStream().WriteLine("hello " + name);
                e.Session.Stream.Flush();
            }
            base.SessionReceive(server, e);
        }
Ejemplo n.º 10
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            base.SessionReceive(server, e);
            PipeStream pipeStream = e.Session.Stream.ToPipeStream();
            HttpToken  token      = (HttpToken)e.Session.Tag;
            var        result     = pipeStream.IndexOfLine();

            while (result.End != null)
            {
                if (result.Length == 2)
                {
                    pipeStream.ReadFree(result.Length);
                    OnStartRequest(token.CurrentRequest, e.Session, token, pipeStream);
                }
                else
                {
                    if (token.CurrentRequest == null)
                    {
                        var    request = new RequestData();
                        byte[] buffer  = null;
                        buffer = new byte[result.Length];
                        pipeStream.Read(buffer, 0, result.Length);
                        request.Data = new ArraySegment <byte>(buffer, 0, result.Length);
                        AnalysisAction(request);
                        if (request.Action == ActionType.Plaintext)
                        {
                            token.CurrentRequest = request;
                        }
                        else
                        {
                            token.CurrentRequest = request;
                            pipeStream.ReadFree((int)pipeStream.Length);
                            OnStartRequest(request, e.Session, token, pipeStream);
                            return;
                        }
                    }
                    else
                    {
                        pipeStream.ReadFree(result.Length);
                    }
                }
                if (pipeStream.Length > 0)
                {
                    result = pipeStream.IndexOfLine();
                }
                else
                {
                    break;
                }
            }
        }
Ejemplo n.º 11
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            base.SessionReceive(server, e);
            PipeStream pipeStream = e.Session.Stream.ToPipeStream();
            HttpToken  token      = (HttpToken)e.Session.Tag;

            //RequestWork work = new RequestWork();
            //work.Handler = this;
            //work.Session = e.Session;
            //work.Stream = pipeStream;
            //work.Token = token;
            //token.NextQueue.Enqueue(work);
            OnProcess(pipeStream, token, e.Session);
        }
Ejemplo n.º 12
0
        public override void SessionReceive(IServer Server, SessionReceiveEventArgs Event)
        {
            var Pipe = Event.Stream.ToPipeStream();

            if (Pipe.TryReadLine(out string Data))
            {
                using MemoryDb db = new MemoryDb();
                var View = db.Traces.Add(new TraceModel
                {
                    Result     = Data,
                    CreateTime = DateTime.Now
                });
                db.SaveChanges();
            }
        }
Ejemplo n.º 13
0
 public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
 {
     try
     {
         string data = e.Stream.ToPipeStream().ReadToEnd();
         e.Session.Stream.ToPipeStream().WriteLine(data);
         e.Session.Stream.Flush();
         SetPoint();
         base.SessionReceive(server, e);
     }
     catch (Exception exception)
     {
         Console.WriteLine(exception);
     }
 }
Ejemplo n.º 14
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            // Console.WriteLine("SessionReceive : " + e);
            string message = e.Stream.ToPipeStream().ReadToEnd(); // ReadUTF ReadLine ReadToEnd

            Console.WriteLine(message);
            // parse message
            // {"type":"command","data":"startRecord"}
            ParseMessage(message, e);

            //e.Session.Stream.ToPipeStream().WriteLine("hello " + name);
            //e.Session.Stream.ToPipeStream().WriteLine("hello");
            //e.Session.Stream.Flush();
            base.SessionReceive(server, e);
        }
Ejemplo n.º 15
0
        private void OnReceive(SessionReceiveEventArgs e)
        {
            TcpOption.Instance.ConcurrencySemaphore.Wait();
            var pipeStream = e.Stream.ToPipeStream();

            if (!pipeStream.TryReadLine(out var message) || message == null)
            {
                return;
            }
            message = message.Trim('\0').Trim();
            if (message.IsBlank())
            {
                return;
            }
            ScopeRuner.RunScope("TcpHandler", OnMessage, (message, e.Session));
        }
Ejemplo n.º 16
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            base.SessionReceive(server, e);
            PipeStream pipeStream = e.Session.Stream.ToPipeStream();
            HttpToken  token      = (HttpToken)e.Session.Tag;
            var        result     = pipeStream.IndexOf(_line.Data);

            while (result.End != null)
            {
                if (result.Length == 2)
                {
                    if (token.CurrentRequest != null)
                    {
                        token.Requests.Enqueue(token.CurrentRequest);
                        token.CurrentRequest = null;
                    }
                    pipeStream.ReadFree(result.Length);
                }
                else
                {
                    if (token.CurrentRequest == null)
                    {
                        token.CurrentRequest = new RequestData();
                        var buffer = System.Buffers.ArrayPool <byte> .Shared.Rent(result.Length);

                        pipeStream.Read(buffer, 0, result.Length);
                        token.CurrentRequest.Data = new ArraySegment <byte>(buffer, 0, result.Length);
                    }
                    else
                    {
                        pipeStream.ReadFree(result.Length);
                    }
                }
                if (pipeStream.Length > 0)
                {
                    result = pipeStream.IndexOf(_line.Data);
                }
                else
                {
                    break;
                }
            }
            if (pipeStream.Length == 0 && token.CurrentRequest == null)
            {
                ProcessReqeusts(token, pipeStream, e.Session);
            }
        }
Ejemplo n.º 17
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            base.SessionReceive(server, e);
            PipeStream pipeStream = e.Session.Stream.ToPipeStream();
            HttpToken  token      = (HttpToken)e.Session.Tag;

            if (Program.Debug || Program.UpDB)
            {
                RequestWork work = new RequestWork();
                work.Handler = this;
                work.Session = e.Session;
                work.Stream  = pipeStream;
                work.Token   = token;
                token.NextQueue.Enqueue(work);
            }
            else
            {
                OnProcess(pipeStream, token, e.Session);
            }
        }
Ejemplo n.º 18
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            string line = e.Stream.ToPipeStream().ReadLine();
            Cmd    cmd  = ChatParse.Parse(line);
            string result;

            switch (cmd.Type)
            {
            case CmdType.LOGIN:
                e.Session.Name = cmd.Text;
                result         = ChatParse.CreateCommand(CmdType.LOGIN, cmd.Text + " join chat room");
                SendToOnlines(result, server);
                break;

            case CmdType.SPEAK:
                result = ChatParse.CreateCommand(CmdType.SPEAK, "[" + e.Session.Name + "]" + cmd.Text);
                SendToOnlines(result, server);
                break;
            }
            base.SessionReceive(server, e);
        }
Ejemplo n.º 19
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            base.SessionReceive(server, e);
            PipeStream pipeStream = e.Session.Stream.ToPipeStream();
            HttpToken  token      = (HttpToken)e.Session.Tag;
            var        result     = pipeStream.IndexOf(_line.Data);

            if (result.End == null)
            {
                return;
            }
            int len = result.Length;

            pipeStream.Read(token.Buffer, 0, len);
            ReadOnlySpan <byte> line   = new Span <byte>(token.Buffer, 0, len);
            ReadOnlySpan <byte> http   = line;
            ReadOnlySpan <byte> method = line;
            ReadOnlySpan <byte> url    = line;
            int offset2 = 0;
            int count   = 0;

            for (int i = 0; i < line.Length; i++)
            {
                if (line[i] == _Space)
                {
                    if (count != 0)
                    {
                        url     = line.Slice(offset2, i - offset2);
                        offset2 = i + 1;
                        http    = line.Slice(offset2, line.Length - offset2 - 2);
                        break;
                    }
                    method  = line.Slice(offset2, i - offset2);
                    offset2 = i + 1;
                    count++;
                }
            }
            OnStartLine(http, method, url, e.Session, token, pipeStream);
        }
Ejemplo n.º 20
0
 public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
 {
     base.SessionReceive(server, e);
 }
Ejemplo n.º 21
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            base.SessionReceive(server, e);
            PipeStream pipeStream = e.Session.Stream.ToPipeStream();
            HttpToken  token      = (HttpToken)e.Session.Tag;
            var        result     = pipeStream.IndexOf(_line.Data);

            while (result.End != null)
            {
                if (result.Length == 2)
                {
                    if (token.CurrentRequest != null)
                    {
                        token.Requests.Enqueue(token.CurrentRequest);
                        token.CurrentRequest = null;
                        token.ThreadDispatcher.Enqueue(token);
                    }
                    pipeStream.ReadFree(result.Length);
                }
                else
                {
                    if (token.CurrentRequest == null)
                    {
                        var request = new RequestData();

                        byte[] buffer = null;
                        if (Program.Debug)
                        {
                            buffer = new byte[result.Length];
                        }
                        else
                        {
                            buffer = System.Buffers.ArrayPool <byte> .Shared.Rent(result.Length);
                        }
                        pipeStream.Read(buffer, 0, result.Length);
                        request.Data = new ArraySegment <byte>(buffer, 0, result.Length);
                        AnalysisAction(request);
                        if (request.Action == ActionType.Plaintext)
                        {
                            token.CurrentRequest = request;
                        }
                        else
                        {
                            pipeStream.ReadFree((int)pipeStream.Length);
                            OnStartRequest(request, e.Session, token, pipeStream);
                            return;
                        }
                    }
                    else
                    {
                        pipeStream.ReadFree(result.Length);
                    }
                }
                if (pipeStream.Length > 0)
                {
                    result = pipeStream.IndexOf(_line.Data);
                }
                else
                {
                    break;
                }
            }
        }
Ejemplo n.º 22
0
 public void SessionReceive(IServer server, SessionReceiveEventArgs e)
 {
 }
Ejemplo n.º 23
0
        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            if (e.Stream.Length < minMsgLength)
            {
                return;
            }

            string json = string.Empty;

            lock (lockObj)
            {
                MsgFullInfo msgFullInfo = msgFullInfos.GetOrAdd(e.Session.ID, key =>
                {
                    return(new MsgFullInfo(key));
                });
                if (!msgFullInfo.NewMsg)
                {
                    byte   firstChar = (byte)e.Stream.ToPipeStream().ReadByte();
                    string beginMsg  = Encoding.UTF8.GetString(new byte[] { firstChar });
                    if (beginFlag.Equals(beginMsg))
                    {
                        msgFullInfo.MsgAllLength = e.Stream.ToPipeStream().ReadInt32();
                        msgFullInfo.NewMsg       = true;
                    }
                }

                //Console.WriteLine($"the msg currentMsgLength is: {e.Stream.Length}");
                //Console.WriteLine($"the msgAllLength value is: {msgFullInfo.MsgAllLength}");

                if (msgFullInfo.MsgAllLength > e.Stream.Length)
                {
                    return;
                }

                msgFullInfo.Reset();
                json = e.Stream.ToPipeStream().ReadToEnd();
            }
            if (json.IsNullOrEmpty())
            {
                return;
            }

            ISession session = e.Session;

            //Console.WriteLine($"the json length is:{json.Length}, value is: {json}");
            CmdInfo info = null;

            try
            {
                info = JsonSerializer.Deserialize <CmdInfo>(json);

                if (info == null)
                {
                    SendError(session, "参数错误-JSON");
                }

                if (!info.IsValid(serverConfig.ValidString))
                {
                    SendError(session, "参数错误-Token");
                    return;
                }

                switch (info.Type)
                {
                case CmdType.Login:
                    Login(session, info);
                    break;

                case CmdType.SendMsg:
                    SendMsg(server, session, info);
                    break;

                case CmdType.SearchUser:
                    SearchUser(server, session, info);
                    break;

                case CmdType.AddUser:
                    AddUser(session, info);
                    break;

                case CmdType.LoginById:
                    LoginById(session, info);
                    break;

                case CmdType.Check:
                    Check(server, session, info);
                    break;

                default:
                    SendError(session, "参数错误-CmdType");
                    break;
                }
            }
            catch (Exception ex)
            {
                server.Error(ex, e.Session, ex.Message);
            }
        }
Ejemplo n.º 24
0
        private void ParseMessage(string message, SessionReceiveEventArgs e)
        {
            CommandData data = GetData(message);

            if (data.type == "command")
            {
                // {"type":"command","data":"startRecord"}
                if (data.data == "startRecord")
                {
                    // start record
                    // ServiceProvider.
                    CommandData answer = new CommandData();
                    answer.type = "command";
                    answer.data = "started";
                    string result = GetString(answer);
                    Console.WriteLine(result);
                    e.Session.Stream.ToPipeStream().WriteLine(result);
                    e.Session.Stream.Flush();
                    Application.Current.Dispatcher.Invoke(
                        () =>
                    {
                        // start record
                        _recordingViewModel.StartRecordingEx();
                    });
                }
                // {"type":"command","data":"startRecord"}
                else if (data.data == "stopRecord")
                {
                    CommandData answer = new CommandData();
                    answer.type = "command";
                    answer.data = "stoped";
                    string result = GetString(answer);
                    Console.WriteLine(result);
                    e.Session.Stream.ToPipeStream().WriteLine(result);
                    e.Session.Stream.Flush();
                    Application.Current.Dispatcher.Invoke(
                        () =>
                    {
                        // stop record
                        _recordingViewModel.StopRecordingEx();
                    });
                }
                // {"type":"command","data":"pauseRecord"}
                else if (data.data == "pauseRecord")
                {
                    CommandData answer = new CommandData();
                    answer.type = "command";
                    answer.data = "paused";
                    string result = GetString(answer);
                    Console.WriteLine(result);
                    e.Session.Stream.ToPipeStream().WriteLine(result);
                    e.Session.Stream.Flush();
                    Application.Current.Dispatcher.Invoke(
                        () =>
                    {
                        // stop record
                        _recordingViewModel.OnPauseExecuteEx();
                    });
                }
                // {"type":"command","data":"resumeRecord"}
                else if (data.data == "resumeRecord")
                {
                    CommandData answer = new CommandData();
                    answer.type = "command";
                    answer.data = "resumed";
                    string result = GetString(answer);
                    Console.WriteLine(result);
                    e.Session.Stream.ToPipeStream().WriteLine(result);
                    e.Session.Stream.Flush();
                    Application.Current.Dispatcher.Invoke(
                        () =>
                    {
                        // stop record
                        _recordingViewModel.OnPauseExecuteEx();
                    });
                }
            }
        }