Example #1
0
        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);
        }
Example #2
0
        /// -----------------------------------------------------------------------------
        /// <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);
        }