(* * 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. *) unit Thrift.Configuration; interface uses SysUtils, Generics.Collections, Generics.Defaults; const DEFAULT_RECURSION_LIMIT = 64; DEFAULT_MAX_MESSAGE_SIZE = 100 * 1024 * 1024; // 100 MB DEFAULT_MAX_FRAME_SIZE = 16384000; // this value is used consistently across all Thrift libraries DEFAULT_THRIFT_TIMEOUT = 5 * 1000; // ms type IThriftConfiguration = interface ['{ADD75449-1A67-4B78-9B75-502A1E338CFC}'] function GetRecursionLimit : Cardinal; procedure SetRecursionLimit( const value : Cardinal); function GetMaxFrameSize : Cardinal; procedure SetMaxFrameSize( const value : Cardinal); function GetMaxMessageSize : Cardinal; procedure SetMaxMessageSize( const value : Cardinal); property RecursionLimit : Cardinal read GetRecursionLimit write SetRecursionLimit; property MaxFrameSize : Cardinal read GetMaxFrameSize write SetMaxFrameSize; property MaxMessageSize : Cardinal read GetMaxMessageSize write SetMaxMessageSize; end; TThriftConfigurationImpl = class( TInterfacedObject, IThriftConfiguration) strict protected FRecursionLimit : Cardinal; FMaxFrameSize : Cardinal; FMaxMessageSize : Cardinal; // IThriftConfiguration function GetRecursionLimit : Cardinal; procedure SetRecursionLimit( const value : Cardinal); function GetMaxFrameSize : Cardinal; procedure SetMaxFrameSize( const value : Cardinal); function GetMaxMessageSize : Cardinal; procedure SetMaxMessageSize( const value : Cardinal); public constructor Create; end; implementation { TThriftConfigurationImpl } constructor TThriftConfigurationImpl.Create; begin inherited Create; FRecursionLimit := DEFAULT_RECURSION_LIMIT; FMaxFrameSize := DEFAULT_MAX_FRAME_SIZE; FMaxMessageSize := DEFAULT_MAX_MESSAGE_SIZE; end; function TThriftConfigurationImpl.GetRecursionLimit: Cardinal; begin result := FRecursionLimit; end; procedure TThriftConfigurationImpl.SetRecursionLimit(const value: Cardinal); begin FRecursionLimit := value; end; function TThriftConfigurationImpl.GetMaxFrameSize: Cardinal; begin result := FMaxFrameSize; end; procedure TThriftConfigurationImpl.SetMaxFrameSize(const value: Cardinal); begin FMaxFrameSize := value; end; function TThriftConfigurationImpl.GetMaxMessageSize: Cardinal; begin result := FMaxMessageSize; end; procedure TThriftConfigurationImpl.SetMaxMessageSize(const value: Cardinal); begin FMaxMessageSize := value; end; end.