'Sends the given Transaction to its destination
Args:
transaction (Transaction)
Returns:
Deferred: Results of the deferred is a tuple in the form of
(response_code, response_body) where the response_body is a
python dict decoded from json'

@defer.inlineCallbacks
@log_function
def send_transaction(self, transaction, json_data_callback=None):

    logger.debug('send_data    dest=%s,    txid=%s', transaction.destination, transaction.transaction_id)
    if (transaction.destination == self.server_name):
        raise RuntimeError('Transport    layer    cannot    send    to    itself!')
    json_data = transaction.get_dict()
    response = (yield self.client.put_json(transaction.destination, path=(PREFIX + ('/send/%s/' % transaction.transaction_id)), data=json_data, json_data_callback=json_data_callback, long_retries=True, backoff_on_404=True))
    logger.debug('send_data    dest=%s,    txid=%s,    got    response:    200', transaction.destination, transaction.transaction_id)
    defer.returnValue(response)
