You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ma...@apache.org on 2017/08/23 01:38:12 UTC
[trafficserver] branch quic-latest updated: Cleanup
QUICTransportParameterValue
This is an automated email from the ASF dual-hosted git repository.
masaori pushed a commit to branch quic-latest
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/quic-latest by this push:
new a86fca0 Cleanup QUICTransportParameterValue
a86fca0 is described below
commit a86fca03b73533a4bcdfc2f58e9bd17413791a9f
Author: Masaori Koshiba <ma...@apache.org>
AuthorDate: Wed Aug 23 10:37:54 2017 +0900
Cleanup QUICTransportParameterValue
---
iocore/net/QUICNetVConnection.cc | 29 ++++---------
iocore/net/quic/QUICTransportParameters.cc | 49 +++++++++++++++++++---
iocore/net/quic/QUICTransportParameters.h | 21 ++++++----
.../net/quic/test/test_QUICTransportParameters.cc | 44 ++++++++-----------
4 files changed, 81 insertions(+), 62 deletions(-)
diff --git a/iocore/net/QUICNetVConnection.cc b/iocore/net/QUICNetVConnection.cc
index d841232..3fc88e0 100644
--- a/iocore/net/QUICNetVConnection.cc
+++ b/iocore/net/QUICNetVConnection.cc
@@ -110,34 +110,19 @@ QUICNetVConnection::start(SSL_CTX *ssl_ctx)
// MUSTs
QUICTransportParametersInEncryptedExtensions *tp = new QUICTransportParametersInEncryptedExtensions();
- size_t max_stream_data_buf_len = 4;
- ats_unique_buf max_stream_data_buf = ats_unique_malloc(max_stream_data_buf_len);
- QUICTypeUtil::write_uint_as_nbytes(params->initial_max_stream_data(), max_stream_data_buf_len, max_stream_data_buf.get(),
- &max_stream_data_buf_len);
tp->add(QUICTransportParameterId::INITIAL_MAX_STREAM_DATA,
std::unique_ptr<QUICTransportParameterValue>(
- new QUICTransportParameterValue(std::move(max_stream_data_buf), max_stream_data_buf_len)));
-
- size_t max_data_buf_len = 4;
- ats_unique_buf max_data_buf = ats_unique_malloc(max_data_buf_len);
- QUICTypeUtil::write_uint_as_nbytes(params->initial_max_data(), max_data_buf_len, max_data_buf.get(), &max_data_buf_len);
- tp->add(QUICTransportParameterId::INITIAL_MAX_DATA,
- std::unique_ptr<QUICTransportParameterValue>(new QUICTransportParameterValue(std::move(max_data_buf), max_data_buf_len)));
-
- size_t max_stream_id_buf_len = 4;
- ats_unique_buf max_stream_id_buf = ats_unique_malloc(max_stream_id_buf_len);
- QUICTypeUtil::write_uint_as_nbytes(params->initial_max_stream_id(), max_stream_id_buf_len, max_stream_id_buf.get(),
- &max_stream_id_buf_len);
+ new QUICTransportParameterValue(params->initial_max_stream_data(), sizeof(params->initial_max_stream_data()))));
+
+ tp->add(QUICTransportParameterId::INITIAL_MAX_DATA, std::unique_ptr<QUICTransportParameterValue>(new QUICTransportParameterValue(
+ params->initial_max_data(), sizeof(params->initial_max_data()))));
+
tp->add(QUICTransportParameterId::INITIAL_MAX_STREAM_ID,
std::unique_ptr<QUICTransportParameterValue>(
- new QUICTransportParameterValue(std::move(max_stream_id_buf), max_stream_id_buf_len)));
+ new QUICTransportParameterValue(params->initial_max_stream_id(), sizeof(params->initial_max_stream_id()))));
- size_t idle_timeout_buf_len = 2;
- ats_unique_buf idle_timeout_buf = ats_unique_malloc(idle_timeout_buf_len);
- QUICTypeUtil::write_uint_as_nbytes(params->no_activity_timeout_in(), idle_timeout_buf_len, idle_timeout_buf.get(),
- &idle_timeout_buf_len);
tp->add(QUICTransportParameterId::IDLE_TIMEOUT, std::unique_ptr<QUICTransportParameterValue>(new QUICTransportParameterValue(
- std::move(idle_timeout_buf), idle_timeout_buf_len)));
+ params->no_activity_timeout_in(), sizeof(uint16_t))));
tp->add_version(QUIC_SUPPORTED_VERSIONS[0]);
// MAYs
diff --git a/iocore/net/quic/QUICTransportParameters.cc b/iocore/net/quic/QUICTransportParameters.cc
index c8638c4..7365084 100644
--- a/iocore/net/quic/QUICTransportParameters.cc
+++ b/iocore/net/quic/QUICTransportParameters.cc
@@ -29,6 +29,35 @@
const static int TRANSPORT_PARAMETERS_MAXIMUM_SIZE = 65535;
+//
+// QUICTransportParameterValue
+//
+QUICTransportParameterValue::QUICTransportParameterValue(ats_unique_buf d, uint16_t l) : _data(std::move(d)), _len(l){};
+
+QUICTransportParameterValue::QUICTransportParameterValue(uint64_t raw_data, uint16_t l)
+{
+ this->_data = ats_unique_malloc(l);
+ size_t len = 0;
+ QUICTypeUtil::write_uint_as_nbytes(raw_data, l, this->_data.get(), &len);
+ this->_len = len;
+};
+
+const uint8_t *
+QUICTransportParameterValue::data() const
+{
+ return this->_data.get();
+}
+
+uint16_t
+QUICTransportParameterValue::len() const
+{
+ return this->_len;
+}
+
+//
+// QUICTransportParameters
+//
+
QUICTransportParameters::QUICTransportParameters(const uint8_t *buf, size_t len)
{
this->_buf = ats_unique_malloc(len);
@@ -57,8 +86,8 @@ QUICTransportParameters::get(QUICTransportParameterId tpid, uint16_t &len) const
} else {
auto p = this->_parameters.find(QUICTransportParameterId::INITIAL_MAX_STREAM_DATA);
if (p != this->_parameters.end()) {
- len = p->second->len;
- return p->second->data.get();
+ len = p->second->len();
+ return p->second->data();
}
}
@@ -109,11 +138,11 @@ QUICTransportParameters::store(uint8_t *buf, uint16_t *len) const
p[1] = it.first & 0xff;
p += 2;
const QUICTransportParameterValue *value = it.second.get();
- p[0] = (value->len & 0xff00) >> 8;
- p[1] = value->len & 0xff;
+ p[0] = (value->len() & 0xff00) >> 8;
+ p[1] = value->len() & 0xff;
p += 2;
- memcpy(p, value->data.get(), value->len);
- p += value->len;
+ memcpy(p, value->data(), value->len());
+ p += value->len();
}
ptrdiff_t n = p - parameters_size - sizeof(uint16_t);
@@ -124,6 +153,10 @@ QUICTransportParameters::store(uint8_t *buf, uint16_t *len) const
*len = (p - buf);
}
+//
+// QUICTransportParametersInClientHello
+//
+
void
QUICTransportParametersInClientHello::_store(uint8_t *buf, uint16_t *len) const
{
@@ -154,6 +187,10 @@ QUICTransportParametersInClientHello::initial_version() const
return QUICTypeUtil::read_QUICVersion(this->_buf.get() + sizeof(QUICVersion));
}
+//
+// QUICTransportParametersInEncryptedExtensions
+//
+
void
QUICTransportParametersInEncryptedExtensions::_store(uint8_t *buf, uint16_t *len) const
{
diff --git a/iocore/net/quic/QUICTransportParameters.h b/iocore/net/quic/QUICTransportParameters.h
index 57814de..a32261f 100644
--- a/iocore/net/quic/QUICTransportParameters.h
+++ b/iocore/net/quic/QUICTransportParameters.h
@@ -65,14 +65,19 @@ private:
uint16_t _id = 0;
};
-typedef struct _QUICTransportParameterValue {
- _QUICTransportParameterValue(){};
- _QUICTransportParameterValue(ats_unique_buf str)
- : data(std::move(str)), len(str ? strlen(reinterpret_cast<const char *>(str.get())) : 0){};
- _QUICTransportParameterValue(ats_unique_buf _data, uint16_t _len) : data(std::move(_data)), len(_len){};
- ats_unique_buf data = {nullptr, [](void *p) { ats_free(p); }};
- uint16_t len = 0;
-} QUICTransportParameterValue;
+class QUICTransportParameterValue
+{
+public:
+ QUICTransportParameterValue(ats_unique_buf d, uint16_t l);
+ QUICTransportParameterValue(uint64_t raw_data, uint16_t l);
+
+ const uint8_t *data() const;
+ uint16_t len() const;
+
+private:
+ ats_unique_buf _data = {nullptr, [](void *p) { ats_free(p); }};
+ uint16_t _len = 0;
+};
class QUICTransportParameters
{
diff --git a/iocore/net/quic/test/test_QUICTransportParameters.cc b/iocore/net/quic/test/test_QUICTransportParameters.cc
index 4977db2..adf3daf 100644
--- a/iocore/net/quic/test/test_QUICTransportParameters.cc
+++ b/iocore/net/quic/test/test_QUICTransportParameters.cc
@@ -92,19 +92,15 @@ TEST_CASE("QUICTransportParametersInClientHello_write", "[quic]")
QUICTransportParametersInClientHello params_in_ch(0x01020304, 0x05060708);
- size_t max_stream_data_buf_len = 4;
- ats_unique_buf max_stream_data_buf = ats_unique_malloc(max_stream_data_buf_len);
- memcpy(max_stream_data_buf.get(), "\x11\x22\x33\x44", max_stream_data_buf_len);
- params_in_ch.add(QUICTransportParameterId::INITIAL_MAX_STREAM_DATA,
- std::unique_ptr<QUICTransportParameterValue>(
- new QUICTransportParameterValue(std::move(max_stream_data_buf), max_stream_data_buf_len)));
-
- uint16_t max_packet_size_buf_len = 2;
- ats_unique_buf max_packet_size_buf = ats_unique_malloc(max_packet_size_buf_len);
- memcpy(max_packet_size_buf.get(), "\xab\xcd", max_packet_size_buf_len);
- params_in_ch.add(QUICTransportParameterId::MAX_PACKET_SIZE,
- std::unique_ptr<QUICTransportParameterValue>(
- new QUICTransportParameterValue(std::move(max_packet_size_buf), max_packet_size_buf_len)));
+ uint32_t max_stream_data = 0x11223344;
+ params_in_ch.add(
+ QUICTransportParameterId::INITIAL_MAX_STREAM_DATA,
+ std::unique_ptr<QUICTransportParameterValue>(new QUICTransportParameterValue(max_stream_data, sizeof(max_stream_data))));
+
+ uint16_t max_packet_size = 0xabcd;
+ params_in_ch.add(
+ QUICTransportParameterId::MAX_PACKET_SIZE,
+ std::unique_ptr<QUICTransportParameterValue>(new QUICTransportParameterValue(max_packet_size, sizeof(max_packet_size))));
params_in_ch.store(buf, &len);
CHECK(len == 24);
@@ -182,19 +178,15 @@ TEST_CASE("QUICTransportParametersEncryptedExtensions_write", "[quic]")
QUICTransportParametersInEncryptedExtensions params_in_ee;
- size_t max_stream_data_buf_len = 4;
- ats_unique_buf max_stream_data_buf = ats_unique_malloc(max_stream_data_buf_len);
- memcpy(max_stream_data_buf.get(), "\x11\x22\x33\x44", max_stream_data_buf_len);
- params_in_ee.add(QUICTransportParameterId::INITIAL_MAX_STREAM_DATA,
- std::unique_ptr<QUICTransportParameterValue>(
- new QUICTransportParameterValue(std::move(max_stream_data_buf), max_stream_data_buf_len)));
-
- uint16_t max_packet_size_buf_len = 2;
- ats_unique_buf max_packet_size_buf = ats_unique_malloc(max_packet_size_buf_len);
- memcpy(max_packet_size_buf.get(), "\xab\xcd", max_packet_size_buf_len);
- params_in_ee.add(QUICTransportParameterId::MAX_PACKET_SIZE,
- std::unique_ptr<QUICTransportParameterValue>(
- new QUICTransportParameterValue(std::move(max_packet_size_buf), max_packet_size_buf_len)));
+ uint32_t max_stream_data = 0x11223344;
+ params_in_ee.add(
+ QUICTransportParameterId::INITIAL_MAX_STREAM_DATA,
+ std::unique_ptr<QUICTransportParameterValue>(new QUICTransportParameterValue(max_stream_data, sizeof(max_stream_data))));
+
+ uint16_t max_packet_size = 0xabcd;
+ params_in_ee.add(
+ QUICTransportParameterId::MAX_PACKET_SIZE,
+ std::unique_ptr<QUICTransportParameterValue>(new QUICTransportParameterValue(max_packet_size, sizeof(max_packet_size))));
params_in_ee.add_version(0x01020304);
params_in_ee.add_version(0x05060708);
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].