Use StringRef instead of NT_String in various places.

Change-Id: Ibd11e0e1c3157eb8647211797ef8b4aa63f58eb8
This commit is contained in:
Peter Johnson
2015-07-05 16:05:58 -07:00
parent eecf0deeec
commit 0f876d1989
4 changed files with 36 additions and 31 deletions

View File

@@ -15,7 +15,7 @@ MessageWriter::~MessageWriter() {}
void MessageWriter::WriteKeepAlive() { Write8(NT_MSG_KEEP_ALIVE); }
void MessageWriter::WriteClientHello(const NT_String& self_id) {
void MessageWriter::WriteClientHello(llvm::StringRef self_id) {
Write8(NT_MSG_CLIENT_HELLO);
Write16(m_proto_rev);
if (m_proto_rev < 0x0300u) return;
@@ -30,7 +30,7 @@ void MessageWriter::WriteProtoUnsup() {
void MessageWriter::WriteServerHelloDone() { Write8(NT_MSG_SERVER_HELLO_DONE); }
void MessageWriter::WriteServerHello(unsigned int flags,
const NT_String& self_id) {
llvm::StringRef self_id) {
if (m_proto_rev < 0x0300u) return; // new message in version 3.0
Write8(NT_MSG_SERVER_HELLO);
Write8(flags);
@@ -42,7 +42,7 @@ void MessageWriter::WriteClientHelloDone() {
Write8(NT_MSG_CLIENT_HELLO_DONE);
}
void MessageWriter::WriteEntryAssign(const NT_String& name, unsigned int id,
void MessageWriter::WriteEntryAssign(llvm::StringRef name, unsigned int id,
unsigned int seq_num,
const NT_Value& value,
unsigned int flags) {
@@ -85,20 +85,18 @@ void MessageWriter::WriteClearEntries() {
}
void MessageWriter::WriteExecuteRpc(unsigned int id, unsigned int uid,
const NT_Value* params_start,
const NT_Value* params_end) {
WriteRpc(NT_MSG_EXECUTE_RPC, id, uid, params_start, params_end);
llvm::ArrayRef<NT_Value> params) {
WriteRpc(NT_MSG_EXECUTE_RPC, id, uid, params);
}
void MessageWriter::WriteRpcResponse(unsigned int id, unsigned int uid,
const NT_Value* results_start,
const NT_Value* results_end) {
WriteRpc(NT_MSG_RPC_RESPONSE, id, uid, results_start, results_end);
llvm::ArrayRef<NT_Value> results) {
WriteRpc(NT_MSG_RPC_RESPONSE, id, uid, results);
}
void MessageWriter::WriteRpc(unsigned int msg_type, unsigned int id,
unsigned int uid, const NT_Value* values_start,
const NT_Value* values_end) {
unsigned int uid,
llvm::ArrayRef<NT_Value> values) {
if (m_proto_rev < 0x0300u) return; // new message in version 3.0
Write8(msg_type);
@@ -106,10 +104,8 @@ void MessageWriter::WriteRpc(unsigned int msg_type, unsigned int id,
Write16(uid);
unsigned long len = 0;
for (const NT_Value* value = values_start; value != values_end; ++value)
len += GetValueSize(*value);
for (auto& value : values) len += GetValueSize(value);
WriteUleb128(len);
for (const NT_Value* value = values_start; value != values_end; ++value)
WriteValue(*value);
for (auto& value : values) WriteValue(value);
}

View File

@@ -10,6 +10,9 @@
#include "WireEncoder.h"
#include "llvm/ArrayRef.h"
#include "llvm/StringRef.h"
namespace ntimpl {
class MessageWriter : private WireEncoder {
@@ -24,12 +27,12 @@ class MessageWriter : private WireEncoder {
using WireEncoder::size;
void WriteKeepAlive();
void WriteClientHello(const NT_String& self_id);
void WriteClientHello(llvm::StringRef self_id);
void WriteProtoUnsup();
void WriteServerHelloDone();
void WriteServerHello(unsigned int flags, const NT_String& self_id);
void WriteServerHello(unsigned int flags, llvm::StringRef self_id);
void WriteClientHelloDone();
void WriteEntryAssign(const NT_String& name, unsigned int id,
void WriteEntryAssign(llvm::StringRef name, unsigned int id,
unsigned int seq_num, const NT_Value& value,
unsigned int flags);
void WriteEntryUpdate(unsigned int id, unsigned int seq_num,
@@ -38,18 +41,16 @@ class MessageWriter : private WireEncoder {
void WriteEntryDelete(unsigned int id);
void WriteClearEntries();
void WriteExecuteRpc(unsigned int id, unsigned int uid,
const NT_Value* params_start,
const NT_Value* params_end);
llvm::ArrayRef<NT_Value> params);
void WriteRpcResponse(unsigned int id, unsigned int uid,
const NT_Value* results_start,
const NT_Value* results_end);
llvm::ArrayRef<NT_Value> results);
MessageWriter(const MessageWriter&) = delete;
MessageWriter& operator=(const MessageWriter&) = delete;
private:
void WriteRpc(unsigned int msg_type, unsigned int id, unsigned int uid,
const NT_Value* values_start, const NT_Value* values_end);
llvm::ArrayRef<NT_Value> values);
};
} // namespace ntimpl

View File

@@ -197,18 +197,18 @@ void WireEncoder::WriteValue(const NT_Value& value) {
}
}
std::size_t WireEncoder::GetStringSize(const NT_String& str) const {
std::size_t WireEncoder::GetStringSize(llvm::StringRef str) const {
if (m_proto_rev < 0x0300u) {
std::size_t len = str.len;
std::size_t len = str.size();
if (len > 0xffff) len = 0xffff; // Limited to 64K length; truncate
return 2 + len;
}
return SizeUleb128(str.len) + str.len;
return SizeUleb128(str.size()) + str.size();
}
void WireEncoder::WriteString(const NT_String& str) {
void WireEncoder::WriteString(llvm::StringRef str) {
// length
std::size_t len = str.len;
std::size_t len = str.size();
if (m_proto_rev < 0x0300u) {
if (len > 0xffff) len = 0xffff; // Limited to 64K length; truncate
Write16(len);
@@ -217,6 +217,6 @@ void WireEncoder::WriteString(const NT_String& str) {
// contents
Reserve(len);
std::memcpy(m_cur, str.str, len);
std::memcpy(m_cur, str.data(), len);
m_cur += len;
}

View File

@@ -13,6 +13,8 @@
#include "ntcore.h"
#include "llvm/StringRef.h"
namespace ntimpl {
/* Encodes native data for network transmission.
@@ -89,7 +91,10 @@ class WireEncoder {
void WriteType(NT_Type type);
void WriteValue(const NT_Value& value);
void WriteString(const NT_String& str);
void WriteString(const NT_String& str) {
WriteString(llvm::StringRef(str.str, str.len));
}
void WriteString(llvm::StringRef str);
/* Utility function to get the written size of a value (without actually
* writing it).
@@ -99,7 +104,10 @@ class WireEncoder {
/* Utility function to get the written size of a string (without actually
* writing it).
*/
std::size_t GetStringSize(const NT_String& str) const;
std::size_t GetStringSize(const NT_String& str) const {
return GetStringSize(llvm::StringRef(str.str, str.len));
}
std::size_t GetStringSize(llvm::StringRef str) const;
WireEncoder(const WireEncoder&) = delete;
WireEncoder& operator=(const WireEncoder&) = delete;