/// <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"}"); } }
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); } } } }
public virtual void SessionReceive(IServer server, SessionReceiveEventArgs e) { if (server.Options.SessionTimeOut > 0) { server.UpdateSession(e.Session); } }
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); }
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); }
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); } }
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(); } }
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); }
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; } } }
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); }
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(); } }
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); } }
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); }
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)); }
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); } }
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); } }
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); }
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); }
public override void SessionReceive(IServer server, SessionReceiveEventArgs e) { base.SessionReceive(server, e); }
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; } } }
public void SessionReceive(IServer server, SessionReceiveEventArgs e) { }
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); } }
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(); }); } } }