def METHOD_NAME(self, client) -> Union[etree.Element, str]:
    """this method is responsible for receiving connection data from the client
    Args:
        client (socket.socket): _description_
    Raises:
        Exception: if data returned by client is empty
    Returns:
        Union[etree.Element, str]: in case of real connection an etree Element should be returned containing client connection data
                                    in case of test connection TEST_SUCCESS const should be returned
    """        
    client.settimeout(int(ReceiveConnectionsConstants().RECEIVECONNECTIONDATATIMEOUT))
    part = client.recv(1)
    if part == b"": raise Exception('empty data')
    client.settimeout(10)
    client.setblocking(True)
    xmlstring = self.recv_until(client, b"</event>").decode()
    if part.decode()+xmlstring == ReceiveConnectionsConstants().TESTDATA: return TEST_SUCCESS
    client.setblocking(True)
    client.settimeout(int(ReceiveConnectionsConstants().RECEIVECONNECTIONDATATIMEOUT))
    xmlstring = "<multiEvent>" + part.decode() + xmlstring + "</multiEvent>"  # convert to xmlstring wrapped by multiEvent tags
    xmlstring = re.sub(r'(?s)\<\?xml(.*)\?\>', '',
                       xmlstring)  # replace xml definition tag with empty string as it breaks serilization
    events = etree.fromstring(xmlstring)
    return events