public ConnectionContextResponse Disconnect(ConnectionContextRequest request) { var response = new ConnectionContextResponse(); var session = CheckSession(ref request, ref response); if (session != null) { var connection = session.CheckConnection(ref request, ref response); if (connection != null) { try { response.Message = Strings.SERVER_SIDE + string.Format(Strings.DISCONNECTED, connection.TcpClient.Client.RemoteEndPoint); connection.SafeDisconnect(); response.Connected = false; response.DataAvailable = false; response.Success = true; session.RemoveConnection(request.Cid); } catch (Exception ex) { response.Success = false; response.Message = Strings.SERVER_SIDE + ex.Message; } } } Log(response.Message, ESeverity.INFO); return(response); }
/// ----------------------------------------------------------------------------- /// <summary> /// Lecture de données /// </summary> /// <param name="request">la requête</param> /// <returns>les données lues dans response.Data</returns> /// ----------------------------------------------------------------------------- public ReadResponse Read(ConnectionContextRequest request) { var response = new ReadResponse(); var session = CheckSession(ref request, ref response); if (session != null) { var connection = session.CheckConnection(ref request, ref response); if (connection != null) { if (response.Connected && response.DataAvailable) { // Données disponibles try { var buffer = new byte[BufferSize]; var count = connection.Stream.Read(buffer, 0, BufferSize); if (count > 0) { Array.Resize(ref buffer, count); response.Success = true; response.Message = string.Empty; Program.StaticXorEncoder(ref buffer, request.Cid); response.Data = buffer; connection.ReadCount += count; } else { response.Success = false; response.Data = null; response.Message = Strings.SERVER_SIDE + Strings.DISCONNECTION_DETECTED; } } catch (Exception ex) { response.Success = false; response.Data = null; response.Message = Strings.SERVER_SIDE + ex.Message; } } else { // Pas de données disponibles response.Success = true; response.Message = string.Empty; response.Data = new byte[] { }; } } } return(response); }