fork download
  1. /// <summary>
  2. /// Класс сессии подключенной к серверу
  3. /// Сама сессия умеет только получать сообщения от клиента, передавать их обработчику и затем посылать ответ
  4. ///
  5. /// </summary>
  6. internal class TcpSession<T> where T : TcpSessionHandler
  7. {
  8. #region Private vars
  9.  
  10. private Socket _sessionSocket = null;
  11. private Guid _sessionID = new Guid();
  12. private bool _isStoped = false;
  13. private Task _sessionCommunicationTask = null;
  14. private CancellationToken _cancellationToken;
  15.  
  16. #endregion Private vars
  17.  
  18. #region Props
  19.  
  20. public Guid ID => _sessionID;
  21. public bool IsStoped => _isStoped;
  22.  
  23. #endregion Props
  24.  
  25. #region ctor
  26.  
  27. public TcpSession(Socket clientSocket)
  28. {
  29. this._sessionSocket = clientSocket;
  30. _sessionID = Guid.NewGuid();
  31. }
  32.  
  33. #endregion ctor
  34.  
  35. #region Public
  36.  
  37. internal void StartSession(CancellationToken cancellationToken)
  38. {
  39. _cancellationToken = cancellationToken;
  40. if(_sessionSocket != null)
  41. {
  42. _isStoped = false;
  43. _sessionCommunicationTask = new Task(SessionCommunicationTask, _cancellationToken);
  44. _sessionCommunicationTask.Start();
  45. }
  46. }
  47.  
  48. private void SessionCommunicationTask()
  49. {
  50. while(!(IsStoped || _cancellationToken.IsCancellationRequested))
  51. {
  52. try
  53. {
  54. byte[] buffer = new byte[1024];
  55. int dataSize = _sessionSocket.ReceiveAsync(buffer, SocketFlags.None).Result;
  56. }
  57. catch(SocketException ex)
  58. {
  59. StopSession();
  60. }
  61. Thread.Sleep(100);
  62. }
  63. }
  64.  
  65. internal void StopSession()
  66. {
  67. _isStoped = true;
  68. }
  69.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cs(68,246): error CS1525: Unexpected symbol `end-of-file'
Compilation failed: 1 error(s), 0 warnings
stdout
Standard output is empty