// Copyright (c) 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "net/quic/quartc/quartc_packet_writer.h"

#include <errno.h>

namespace net {

QuartcPacketWriter::QuartcPacketWriter(
    QuartcSessionInterface::PacketTransport* packet_transport,
    QuicByteCount max_packet_size)
    : packet_transport_(packet_transport), max_packet_size_(max_packet_size) {}

WriteResult QuartcPacketWriter::WritePacket(const char* buffer,
                                            size_t buf_len,
                                            const IPAddress& self_address,
                                            const IPEndPoint& peer_address,
                                            PerPacketOptions* options) {
  DCHECK(packet_transport_);
  int bytes_written = packet_transport_->Write(buffer, buf_len);
  if (bytes_written <= 0) {
    return WriteResult(WRITE_STATUS_BLOCKED, EWOULDBLOCK);
  }
  return WriteResult(WRITE_STATUS_OK, bytes_written);
}

bool QuartcPacketWriter::IsWriteBlockedDataBuffered() const {
  return false;
}

bool QuartcPacketWriter::IsWriteBlocked() const {
  DCHECK(packet_transport_);
  return !packet_transport_->CanWrite();
}

QuicByteCount QuartcPacketWriter::GetMaxPacketSize(
    const IPEndPoint& peer_address) const {
  return max_packet_size_;
}

void QuartcPacketWriter::SetWritable() {}

}  // namespace net
