1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 20 #ifndef THRIFT_TCONFIGURATION_H 21 #define THRIFT_TCONFIGURATION_H 22 23 namespace apache { 24 namespace thrift { 25 26 class TConfiguration 27 { 28 public: 29 TConfiguration(int maxMessageSize = DEFAULT_MAX_MESSAGE_SIZE, 30 int maxFrameSize = DEFAULT_MAX_FRAME_SIZE, int recursionLimit = DEFAULT_RECURSION_DEPTH) maxMessageSize_(maxMessageSize)31 : maxMessageSize_(maxMessageSize), maxFrameSize_(maxFrameSize), recursionLimit_(recursionLimit) {} 32 33 const static int DEFAULT_MAX_MESSAGE_SIZE = 100 * 1024 * 1024; 34 const static int DEFAULT_MAX_FRAME_SIZE = 16384000; // this value is used consistently across all Thrift libraries 35 const static int DEFAULT_RECURSION_DEPTH = 64; 36 getMaxMessageSize()37 inline int getMaxMessageSize() { return maxMessageSize_; } setMaxMessageSize(int maxMessageSize)38 inline void setMaxMessageSize(int maxMessageSize) { maxMessageSize_ = maxMessageSize; } getMaxFrameSize()39 inline int getMaxFrameSize() { return maxFrameSize_; } setMaxFrameSize(int maxFrameSize)40 inline void setMaxFrameSize(int maxFrameSize) { maxFrameSize_ = maxFrameSize; } getRecursionLimit()41 inline int getRecursionLimit() { return recursionLimit_; } setRecursionLimit(int recursionLimit)42 inline void setRecursionLimit(int recursionLimit) { recursionLimit_ = recursionLimit; } 43 44 private: 45 int maxMessageSize_ = DEFAULT_MAX_MESSAGE_SIZE; 46 int maxFrameSize_ = DEFAULT_MAX_FRAME_SIZE; 47 int recursionLimit_ = DEFAULT_RECURSION_DEPTH; 48 49 // TODO(someone_smart): add connection and i/o timeouts 50 }; 51 } 52 } // apache::thrift 53 54 #endif /* THRIFT_TCONFIGURATION_H */ 55 56