Represents the connection between an EnclaveClient and an enclave host. A connection is created when the client calls EnclaveClient.start which then goes on to call EnclaveTransport.connect. There may be multiple clients connected to a single EnclaveTransport and each connection must be able to disambiguate between all of them.
Send the encrypted mail bytes to the host for delivery to the enclave. This method must block until the enclave processes the mail. If the enclave produces a synchronous response mail then that is returned back here.
If the enclave is unable to decrypt the mail bytes then the host must indicate so and this method must throw a MailDecryptionException. The client will catch this and attempt redelivery of the original message by using a fresh new copy of the EnclaveInstanceInfo from the host.
If the enclave itself threw an exception then this method must throw an EnclaveException. The message or may not contain the original message.