aboutsummaryrefslogtreecommitdiff
path: root/contrib/native/client/src/clientlib/rpcEncoder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/native/client/src/clientlib/rpcEncoder.cpp')
-rw-r--r--contrib/native/client/src/clientlib/rpcEncoder.cpp109
1 files changed, 0 insertions, 109 deletions
diff --git a/contrib/native/client/src/clientlib/rpcEncoder.cpp b/contrib/native/client/src/clientlib/rpcEncoder.cpp
deleted file mode 100644
index 2f354d7a7..000000000
--- a/contrib/native/client/src/clientlib/rpcEncoder.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
-#include <google/protobuf/message_lite.h>
-#include <google/protobuf/wire_format_lite.h>
-
-#include "drill/common.hpp"
-#include "rpcEncoder.hpp"
-#include "rpcMessage.hpp"
-
-namespace Drill{
-
-using google::protobuf::internal::WireFormatLite;
-using exec::rpc::CompleteRpcMessage;
-
-const uint32_t RpcEncoder::HEADER_TAG = WireFormatLite::MakeTag(CompleteRpcMessage::kHeaderFieldNumber, WireFormatLite::WIRETYPE_LENGTH_DELIMITED);
-const uint32_t RpcEncoder::PROTOBUF_BODY_TAG = WireFormatLite::MakeTag(CompleteRpcMessage::kProtobufBodyFieldNumber, WireFormatLite::WIRETYPE_LENGTH_DELIMITED);
-const uint32_t RpcEncoder::RAW_BODY_TAG = WireFormatLite::MakeTag(CompleteRpcMessage::kRawBodyFieldNumber, WireFormatLite::WIRETYPE_LENGTH_DELIMITED);
-const uint32_t RpcEncoder::HEADER_TAG_LENGTH = getRawVarintSize(HEADER_TAG);
-const uint32_t RpcEncoder::PROTOBUF_BODY_TAG_LENGTH = getRawVarintSize(PROTOBUF_BODY_TAG);
-const uint32_t RpcEncoder::RAW_BODY_TAG_LENGTH = getRawVarintSize(RAW_BODY_TAG);
-
-
-bool RpcEncoder::Encode(DataBuf& buf, OutBoundRpcMessage& msg) {
- using exec::rpc::RpcHeader;
- using google::protobuf::io::CodedOutputStream;
- using google::protobuf::io::ArrayOutputStream;
- // Todo:
- //
- // - let a context manager to allocate a buffer `ByteBuf buf = ctx.alloc().buffer();`
- // - builder pattern
- //
- #ifdef CODER_DEBUG
- cerr << "\nEncoding outbound message " << msg << endl;
- #endif
-
- RpcHeader header;
- header.set_mode(msg.m_mode);
- header.set_coordination_id(msg.m_coord_id);
- header.set_rpc_type(msg.m_rpc_type);
-
- // calcute the length of the message
- int header_length = header.ByteSize();
- int proto_body_length = msg.m_pbody->ByteSize();
- int full_length = HEADER_TAG_LENGTH + getRawVarintSize(header_length) + header_length + \
- PROTOBUF_BODY_TAG_LENGTH + getRawVarintSize(proto_body_length) + proto_body_length;
-
- /*
- if(raw_body_length > 0) {
- full_length += (RAW_BODY_TAG_LENGTH + getRawVarintSize(raw_body_length) + raw_body_length);
- }
- */
-
- buf.resize(full_length + getRawVarintSize(full_length));
- ArrayOutputStream* os = new ArrayOutputStream(buf.data(), buf.size());
- CodedOutputStream* cos = new CodedOutputStream(os);
-
-
- #ifdef CODER_DEBUG
- cerr << "Writing full length " << full_length << endl;
- #endif
-
- // write full length first (this is length delimited stream).
- cos->WriteVarint32(full_length);
-
- #ifdef CODER_DEBUG
- cerr << "Writing header length " << header_length << endl;
- #endif
-
- cos->WriteVarint32(HEADER_TAG);
- cos->WriteVarint32(header_length);
-
- header.SerializeToCodedStream(cos);
-
- // write protobuf body length and body
- #ifdef CODER_DEBUG
- cerr << "Writing protobuf body length " << proto_body_length << endl;
- #endif
-
- cos->WriteVarint32(PROTOBUF_BODY_TAG);
- cos->WriteVarint32(proto_body_length);
- msg.m_pbody->SerializeToCodedStream(cos);
-
- delete os;
- delete cos;
-
- // Done! no read to write data body for client
- return true;
-}
-
-} // namespace Drill