SendTransaction::SendTransaction(const QHostAddress& addr,
                                 quint16 port,
                                 FilePtr file,
                                 QObject* parent)
    : QObject(parent)
{
    Settings s;
    int MTU;
    s.GetUdpMTU(MTU);
    s.GetMaxRetransmissions(max_retransmissions_);
    s.GetTimeoutForSending(timeout_for_sending_);
    s.GetTimeoutForPermission(timeout_for_permission_);

    // For explanation see "Serializing Qt Data Types" in docs
    typedef quint32 ByteArrayLengthType;

    data_size_ = MTU -
            sizeof(Message::state) -
            sizeof(ByteArrayLengthType) -
            sizeof(Message::id) -
            sizeof(Message::seq);
    addr_ = addr;
    port_ = port;
    file_ = file;
    bytes_total_ = file_->size();
    seq_ = 0;
    id_ = 0;
}