http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d55608f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TServer.h ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TServer.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TServer.h deleted file mode 100644 index c9e88b1..0000000 --- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TServer.h +++ /dev/null @@ -1,315 +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. - */ - -#ifndef _THRIFT_SERVER_TSERVER_H_ -#define _THRIFT_SERVER_TSERVER_H_ 1 - -#include <thrift/TProcessor.h> -#include <thrift/transport/TServerTransport.h> -#include <thrift/protocol/TBinaryProtocol.h> -#include <thrift/concurrency/Thread.h> - -#include <boost/shared_ptr.hpp> - -namespace apache { namespace thrift { namespace server { - -using apache::thrift::TProcessor; -using apache::thrift::protocol::TBinaryProtocolFactory; -using apache::thrift::protocol::TProtocol; -using apache::thrift::protocol::TProtocolFactory; -using apache::thrift::transport::TServerTransport; -using apache::thrift::transport::TTransport; -using apache::thrift::transport::TTransportFactory; - -/** - * Virtual interface class that can handle events from the server core. To - * use this you should subclass it and implement the methods that you care - * about. Your subclass can also store local data that you may care about, - * such as additional "arguments" to these methods (stored in the object - * instance's state). - */ -class TServerEventHandler { - public: - - virtual ~TServerEventHandler() {} - - /** - * Called before the server begins. - */ - virtual void preServe() {} - - /** - * Called when a new client has connected and is about to being processing. - */ - virtual void* createContext(boost::shared_ptr<TProtocol> input, - boost::shared_ptr<TProtocol> output) { - (void)input; - (void)output; - return NULL; - } - - /** - * Called when a client has finished request-handling to delete server - * context. - */ - virtual void deleteContext(void* serverContext, - boost::shared_ptr<TProtocol>input, - boost::shared_ptr<TProtocol>output) { - (void)serverContext; - (void)input; - (void)output; - } - - /** - * Called when a client is about to call the processor. - */ - virtual void processContext(void* serverContext, - boost::shared_ptr<TTransport> transport) { - (void)serverContext; - (void)transport; -} - - protected: - - /** - * Prevent direct instantiation. - */ - TServerEventHandler() {} - -}; - -/** - * Thrift server. - * - */ -class TServer : public concurrency::Runnable { - public: - - virtual ~TServer() {} - - virtual void serve() = 0; - - virtual void stop() {} - - // Allows running the server as a Runnable thread - virtual void run() { - serve(); - } - - boost::shared_ptr<TProcessorFactory> getProcessorFactory() { - return processorFactory_; - } - - boost::shared_ptr<TServerTransport> getServerTransport() { - return serverTransport_; - } - - boost::shared_ptr<TTransportFactory> getInputTransportFactory() { - return inputTransportFactory_; - } - - boost::shared_ptr<TTransportFactory> getOutputTransportFactory() { - return outputTransportFactory_; - } - - boost::shared_ptr<TProtocolFactory> getInputProtocolFactory() { - return inputProtocolFactory_; - } - - boost::shared_ptr<TProtocolFactory> getOutputProtocolFactory() { - return outputProtocolFactory_; - } - - boost::shared_ptr<TServerEventHandler> getEventHandler() { - return eventHandler_; - } - -protected: - template<typename ProcessorFactory> - TServer(const boost::shared_ptr<ProcessorFactory>& processorFactory, - THRIFT_OVERLOAD_IF(ProcessorFactory, TProcessorFactory)): - processorFactory_(processorFactory) { - setInputTransportFactory(boost::shared_ptr<TTransportFactory>( - new TTransportFactory())); - setOutputTransportFactory(boost::shared_ptr<TTransportFactory>( - new TTransportFactory())); - setInputProtocolFactory(boost::shared_ptr<TProtocolFactory>( - new TBinaryProtocolFactory())); - setOutputProtocolFactory(boost::shared_ptr<TProtocolFactory>( - new TBinaryProtocolFactory())); - } - - template<typename Processor> - TServer(const boost::shared_ptr<Processor>& processor, - THRIFT_OVERLOAD_IF(Processor, TProcessor)): - processorFactory_(new TSingletonProcessorFactory(processor)) { - setInputTransportFactory(boost::shared_ptr<TTransportFactory>(new TTransportFactory())); - setOutputTransportFactory(boost::shared_ptr<TTransportFactory>(new TTransportFactory())); - setInputProtocolFactory(boost::shared_ptr<TProtocolFactory>(new TBinaryProtocolFactory())); - setOutputProtocolFactory(boost::shared_ptr<TProtocolFactory>(new TBinaryProtocolFactory())); - } - - template<typename ProcessorFactory> - TServer(const boost::shared_ptr<ProcessorFactory>& processorFactory, - const boost::shared_ptr<TServerTransport>& serverTransport, - THRIFT_OVERLOAD_IF(ProcessorFactory, TProcessorFactory)): - processorFactory_(processorFactory), - serverTransport_(serverTransport) { - setInputTransportFactory(boost::shared_ptr<TTransportFactory>( - new TTransportFactory())); - setOutputTransportFactory(boost::shared_ptr<TTransportFactory>( - new TTransportFactory())); - setInputProtocolFactory(boost::shared_ptr<TProtocolFactory>( - new TBinaryProtocolFactory())); - setOutputProtocolFactory(boost::shared_ptr<TProtocolFactory>( - new TBinaryProtocolFactory())); - } - - template<typename Processor> - TServer(const boost::shared_ptr<Processor>& processor, - const boost::shared_ptr<TServerTransport>& serverTransport, - THRIFT_OVERLOAD_IF(Processor, TProcessor)): - processorFactory_(new TSingletonProcessorFactory(processor)), - serverTransport_(serverTransport) { - setInputTransportFactory(boost::shared_ptr<TTransportFactory>(new TTransportFactory())); - setOutputTransportFactory(boost::shared_ptr<TTransportFactory>(new TTransportFactory())); - setInputProtocolFactory(boost::shared_ptr<TProtocolFactory>(new TBinaryProtocolFactory())); - setOutputProtocolFactory(boost::shared_ptr<TProtocolFactory>(new TBinaryProtocolFactory())); - } - - template<typename ProcessorFactory> - TServer(const boost::shared_ptr<ProcessorFactory>& processorFactory, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - THRIFT_OVERLOAD_IF(ProcessorFactory, TProcessorFactory)): - processorFactory_(processorFactory), - serverTransport_(serverTransport), - inputTransportFactory_(transportFactory), - outputTransportFactory_(transportFactory), - inputProtocolFactory_(protocolFactory), - outputProtocolFactory_(protocolFactory) {} - - template<typename Processor> - TServer(const boost::shared_ptr<Processor>& processor, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - THRIFT_OVERLOAD_IF(Processor, TProcessor)): - processorFactory_(new TSingletonProcessorFactory(processor)), - serverTransport_(serverTransport), - inputTransportFactory_(transportFactory), - outputTransportFactory_(transportFactory), - inputProtocolFactory_(protocolFactory), - outputProtocolFactory_(protocolFactory) {} - - template<typename ProcessorFactory> - TServer(const boost::shared_ptr<ProcessorFactory>& processorFactory, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& inputTransportFactory, - const boost::shared_ptr<TTransportFactory>& outputTransportFactory, - const boost::shared_ptr<TProtocolFactory>& inputProtocolFactory, - const boost::shared_ptr<TProtocolFactory>& outputProtocolFactory, - THRIFT_OVERLOAD_IF(ProcessorFactory, TProcessorFactory)): - processorFactory_(processorFactory), - serverTransport_(serverTransport), - inputTransportFactory_(inputTransportFactory), - outputTransportFactory_(outputTransportFactory), - inputProtocolFactory_(inputProtocolFactory), - outputProtocolFactory_(outputProtocolFactory) {} - - template<typename Processor> - TServer(const boost::shared_ptr<Processor>& processor, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& inputTransportFactory, - const boost::shared_ptr<TTransportFactory>& outputTransportFactory, - const boost::shared_ptr<TProtocolFactory>& inputProtocolFactory, - const boost::shared_ptr<TProtocolFactory>& outputProtocolFactory, - THRIFT_OVERLOAD_IF(Processor, TProcessor)): - processorFactory_(new TSingletonProcessorFactory(processor)), - serverTransport_(serverTransport), - inputTransportFactory_(inputTransportFactory), - outputTransportFactory_(outputTransportFactory), - inputProtocolFactory_(inputProtocolFactory), - outputProtocolFactory_(outputProtocolFactory) {} - - /** - * Get a TProcessor to handle calls on a particular connection. - * - * This method should only be called once per connection (never once per - * call). This allows the TProcessorFactory to return a different processor - * for each connection if it desires. - */ - boost::shared_ptr<TProcessor> getProcessor( - boost::shared_ptr<TProtocol> inputProtocol, - boost::shared_ptr<TProtocol> outputProtocol, - boost::shared_ptr<TTransport> transport) { - TConnectionInfo connInfo; - connInfo.input = inputProtocol; - connInfo.output = outputProtocol; - connInfo.transport = transport; - return processorFactory_->getProcessor(connInfo); - } - - // Class variables - boost::shared_ptr<TProcessorFactory> processorFactory_; - boost::shared_ptr<TServerTransport> serverTransport_; - - boost::shared_ptr<TTransportFactory> inputTransportFactory_; - boost::shared_ptr<TTransportFactory> outputTransportFactory_; - - boost::shared_ptr<TProtocolFactory> inputProtocolFactory_; - boost::shared_ptr<TProtocolFactory> outputProtocolFactory_; - - boost::shared_ptr<TServerEventHandler> eventHandler_; - -public: - void setInputTransportFactory(boost::shared_ptr<TTransportFactory> inputTransportFactory) { - inputTransportFactory_ = inputTransportFactory; - } - - void setOutputTransportFactory(boost::shared_ptr<TTransportFactory> outputTransportFactory) { - outputTransportFactory_ = outputTransportFactory; - } - - void setInputProtocolFactory(boost::shared_ptr<TProtocolFactory> inputProtocolFactory) { - inputProtocolFactory_ = inputProtocolFactory; - } - - void setOutputProtocolFactory(boost::shared_ptr<TProtocolFactory> outputProtocolFactory) { - outputProtocolFactory_ = outputProtocolFactory; - } - - void setServerEventHandler(boost::shared_ptr<TServerEventHandler> eventHandler) { - eventHandler_ = eventHandler; - } - -}; - -/** - * Helper function to increase the max file descriptors limit - * for the current process and all of its children. - * By default, tries to increase it to as much as 2^24. - */ - int increase_max_fds(int max_fds=(1<<24)); - - -}}} // apache::thrift::server - -#endif // #ifndef _THRIFT_SERVER_TSERVER_H_
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d55608f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TSimpleServer.cpp ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TSimpleServer.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TSimpleServer.cpp deleted file mode 100644 index 5fc4c97..0000000 --- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TSimpleServer.cpp +++ /dev/null @@ -1,153 +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 <thrift/server/TSimpleServer.h> -#include <thrift/transport/TTransportException.h> -#include <string> -#include <iostream> - -namespace apache { namespace thrift { namespace server { - -using namespace std; -using namespace apache::thrift; -using namespace apache::thrift::protocol; -using namespace apache::thrift::transport; -using boost::shared_ptr; - -/** - * A simple single-threaded application server. Perfect for unit tests! - * - */ -void TSimpleServer::serve() { - - shared_ptr<TTransport> client; - shared_ptr<TTransport> inputTransport; - shared_ptr<TTransport> outputTransport; - shared_ptr<TProtocol> inputProtocol; - shared_ptr<TProtocol> outputProtocol; - - // Start the server listening - serverTransport_->listen(); - - // Run the preServe event - if (eventHandler_) { - eventHandler_->preServe(); - } - - // Fetch client from server - while (!stop_) { - try { - client = serverTransport_->accept(); - inputTransport = inputTransportFactory_->getTransport(client); - outputTransport = outputTransportFactory_->getTransport(client); - inputProtocol = inputProtocolFactory_->getProtocol(inputTransport); - outputProtocol = outputProtocolFactory_->getProtocol(outputTransport); - } catch (TTransportException& ttx) { - if (inputTransport) { inputTransport->close(); } - if (outputTransport) { outputTransport->close(); } - if (client) { client->close(); } - if (!stop_ || ttx.getType() != TTransportException::INTERRUPTED) { - string errStr = string("TServerTransport died on accept: ") + ttx.what(); - GlobalOutput(errStr.c_str()); - } - continue; - } catch (TException& tx) { - if (inputTransport) { inputTransport->close(); } - if (outputTransport) { outputTransport->close(); } - if (client) { client->close(); } - string errStr = string("Some kind of accept exception: ") + tx.what(); - GlobalOutput(errStr.c_str()); - continue; - } catch (string s) { - if (inputTransport) { inputTransport->close(); } - if (outputTransport) { outputTransport->close(); } - if (client) { client->close(); } - string errStr = string("Some kind of accept exception: ") + s; - GlobalOutput(errStr.c_str()); - break; - } - - // Get the processor - shared_ptr<TProcessor> processor = getProcessor(inputProtocol, - outputProtocol, client); - - void* connectionContext = NULL; - if (eventHandler_) { - connectionContext = eventHandler_->createContext(inputProtocol, outputProtocol); - } - try { - for (;;) { - if (eventHandler_) { - eventHandler_->processContext(connectionContext, client); - } - if (!processor->process(inputProtocol, outputProtocol, - connectionContext) || - // Peek ahead, is the remote side closed? - !inputProtocol->getTransport()->peek()) { - break; - } - } - } catch (const TTransportException& ttx) { - string errStr = string("TSimpleServer client died: ") + ttx.what(); - GlobalOutput(errStr.c_str()); - } catch (const std::exception& x) { - GlobalOutput.printf("TSimpleServer exception: %s: %s", - typeid(x).name(), x.what()); - } catch (...) { - GlobalOutput("TSimpleServer uncaught exception."); - } - if (eventHandler_) { - eventHandler_->deleteContext(connectionContext, inputProtocol, outputProtocol); - } - - try { - inputTransport->close(); - } catch (const TTransportException& ttx) { - string errStr = string("TSimpleServer input close failed: ") - + ttx.what(); - GlobalOutput(errStr.c_str()); - } - try { - outputTransport->close(); - } catch (const TTransportException& ttx) { - string errStr = string("TSimpleServer output close failed: ") - + ttx.what(); - GlobalOutput(errStr.c_str()); - } - try { - client->close(); - } catch (const TTransportException& ttx) { - string errStr = string("TSimpleServer client close failed: ") - + ttx.what(); - GlobalOutput(errStr.c_str()); - } - } - - if (stop_) { - try { - serverTransport_->close(); - } catch (TTransportException &ttx) { - string errStr = string("TServerTransport failed on close: ") + ttx.what(); - GlobalOutput(errStr.c_str()); - } - stop_ = false; - } -} - -}}} // apache::thrift::server http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d55608f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TSimpleServer.h ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TSimpleServer.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TSimpleServer.h deleted file mode 100644 index f9e0e2b..0000000 --- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TSimpleServer.h +++ /dev/null @@ -1,102 +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. - */ - -#ifndef _THRIFT_SERVER_TSIMPLESERVER_H_ -#define _THRIFT_SERVER_TSIMPLESERVER_H_ 1 - -#include <thrift/server/TServer.h> -#include <thrift/transport/TServerTransport.h> - -namespace apache { namespace thrift { namespace server { - -/** - * This is the most basic simple server. It is single-threaded and runs a - * continuous loop of accepting a single connection, processing requests on - * that connection until it closes, and then repeating. It is a good example - * of how to extend the TServer interface. - * - */ -class TSimpleServer : public TServer { - public: - template<typename ProcessorFactory> - TSimpleServer( - const boost::shared_ptr<ProcessorFactory>& processorFactory, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - THRIFT_OVERLOAD_IF(ProcessorFactory, TProcessorFactory)) : - TServer(processorFactory, serverTransport, transportFactory, - protocolFactory), - stop_(false) {} - - template<typename Processor> - TSimpleServer( - const boost::shared_ptr<Processor>& processor, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - THRIFT_OVERLOAD_IF(Processor, TProcessor)) : - TServer(processor, serverTransport, transportFactory, protocolFactory), - stop_(false) {} - - template<typename ProcessorFactory> - TSimpleServer( - const boost::shared_ptr<ProcessorFactory>& processorFactory, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& inputTransportFactory, - const boost::shared_ptr<TTransportFactory>& outputTransportFactory, - const boost::shared_ptr<TProtocolFactory>& inputProtocolFactory, - const boost::shared_ptr<TProtocolFactory>& outputProtocolFactory, - THRIFT_OVERLOAD_IF(ProcessorFactory, TProcessorFactory)) : - TServer(processorFactory, serverTransport, - inputTransportFactory, outputTransportFactory, - inputProtocolFactory, outputProtocolFactory), - stop_(false) {} - - template<typename Processor> - TSimpleServer( - const boost::shared_ptr<Processor>& processor, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& inputTransportFactory, - const boost::shared_ptr<TTransportFactory>& outputTransportFactory, - const boost::shared_ptr<TProtocolFactory>& inputProtocolFactory, - const boost::shared_ptr<TProtocolFactory>& outputProtocolFactory, - THRIFT_OVERLOAD_IF(Processor, TProcessor)) : - TServer(processor, serverTransport, - inputTransportFactory, outputTransportFactory, - inputProtocolFactory, outputProtocolFactory), - stop_(false) {} - - ~TSimpleServer() {} - - void serve(); - - void stop() { - stop_ = true; - serverTransport_->interrupt(); - } - - protected: - bool stop_; - -}; - -}}} // apache::thrift::server - -#endif // #ifndef _THRIFT_SERVER_TSIMPLESERVER_H_ http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d55608f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadPoolServer.cpp ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadPoolServer.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadPoolServer.cpp deleted file mode 100644 index da33ec2..0000000 --- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadPoolServer.cpp +++ /dev/null @@ -1,211 +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 <thrift/thrift-config.h> - -#include <thrift/server/TThreadPoolServer.h> -#include <thrift/transport/TTransportException.h> -#include <thrift/concurrency/Thread.h> -#include <thrift/concurrency/ThreadManager.h> -#include <string> -#include <iostream> - -namespace apache { namespace thrift { namespace server { - -using boost::shared_ptr; -using namespace std; -using namespace apache::thrift; -using namespace apache::thrift::concurrency; -using namespace apache::thrift::protocol; -using namespace apache::thrift::transport; - -class TThreadPoolServer::Task : public Runnable { - -public: - - Task(TThreadPoolServer &server, - shared_ptr<TProcessor> processor, - shared_ptr<TProtocol> input, - shared_ptr<TProtocol> output, - shared_ptr<TTransport> transport) : - server_(server), - processor_(processor), - input_(input), - output_(output), - transport_(transport) { - } - - ~Task() {} - - void run() { - boost::shared_ptr<TServerEventHandler> eventHandler = - server_.getEventHandler(); - void* connectionContext = NULL; - if (eventHandler) { - connectionContext = eventHandler->createContext(input_, output_); - } - try { - for (;;) { - if (eventHandler) { - eventHandler->processContext(connectionContext, transport_); - } - if (!processor_->process(input_, output_, connectionContext) || - !input_->getTransport()->peek()) { - break; - } - } - } catch (const TTransportException&) { - // This is reasonably expected, client didn't send a full request so just - // ignore him - // string errStr = string("TThreadPoolServer client died: ") + ttx.what(); - // GlobalOutput(errStr.c_str()); - } catch (const std::exception& x) { - GlobalOutput.printf("TThreadPoolServer exception %s: %s", - typeid(x).name(), x.what()); - } catch (...) { - GlobalOutput("TThreadPoolServer, unexpected exception in " - "TThreadPoolServer::Task::run()"); - } - - if (eventHandler) { - eventHandler->deleteContext(connectionContext, input_, output_); - } - - try { - input_->getTransport()->close(); - } catch (TTransportException& ttx) { - string errStr = string("TThreadPoolServer input close failed: ") + ttx.what(); - GlobalOutput(errStr.c_str()); - } - try { - output_->getTransport()->close(); - } catch (TTransportException& ttx) { - string errStr = string("TThreadPoolServer output close failed: ") + ttx.what(); - GlobalOutput(errStr.c_str()); - } - - } - - private: - TServer& server_; - shared_ptr<TProcessor> processor_; - shared_ptr<TProtocol> input_; - shared_ptr<TProtocol> output_; - shared_ptr<TTransport> transport_; -}; - -TThreadPoolServer::~TThreadPoolServer() {} - -void TThreadPoolServer::serve() { - shared_ptr<TTransport> client; - shared_ptr<TTransport> inputTransport; - shared_ptr<TTransport> outputTransport; - shared_ptr<TProtocol> inputProtocol; - shared_ptr<TProtocol> outputProtocol; - - // Start the server listening - serverTransport_->listen(); - - // Run the preServe event - if (eventHandler_) { - eventHandler_->preServe(); - } - - while (!stop_) { - try { - client.reset(); - inputTransport.reset(); - outputTransport.reset(); - inputProtocol.reset(); - outputProtocol.reset(); - - // Fetch client from server - client = serverTransport_->accept(); - - // Make IO transports - inputTransport = inputTransportFactory_->getTransport(client); - outputTransport = outputTransportFactory_->getTransport(client); - inputProtocol = inputProtocolFactory_->getProtocol(inputTransport); - outputProtocol = outputProtocolFactory_->getProtocol(outputTransport); - - shared_ptr<TProcessor> processor = getProcessor(inputProtocol, - outputProtocol, client); - - // Add to threadmanager pool - shared_ptr<TThreadPoolServer::Task> task(new TThreadPoolServer::Task( - *this, processor, inputProtocol, outputProtocol, client)); - threadManager_->add(task, timeout_, taskExpiration_); - - } catch (TTransportException& ttx) { - if (inputTransport) { inputTransport->close(); } - if (outputTransport) { outputTransport->close(); } - if (client) { client->close(); } - if (!stop_ || ttx.getType() != TTransportException::INTERRUPTED) { - string errStr = string("TThreadPoolServer: TServerTransport died on accept: ") + ttx.what(); - GlobalOutput(errStr.c_str()); - } - continue; - } catch (TException& tx) { - if (inputTransport) { inputTransport->close(); } - if (outputTransport) { outputTransport->close(); } - if (client) { client->close(); } - string errStr = string("TThreadPoolServer: Caught TException: ") + tx.what(); - GlobalOutput(errStr.c_str()); - continue; - } catch (string s) { - if (inputTransport) { inputTransport->close(); } - if (outputTransport) { outputTransport->close(); } - if (client) { client->close(); } - string errStr = "TThreadPoolServer: Unknown exception: " + s; - GlobalOutput(errStr.c_str()); - break; - } - } - - // If stopped manually, join the existing threads - if (stop_) { - try { - serverTransport_->close(); - threadManager_->join(); - } catch (TException &tx) { - string errStr = string("TThreadPoolServer: Exception shutting down: ") + tx.what(); - GlobalOutput(errStr.c_str()); - } - stop_ = false; - } - -} - -int64_t TThreadPoolServer::getTimeout() const { - return timeout_; -} - -void TThreadPoolServer::setTimeout(int64_t value) { - timeout_ = value; -} - -int64_t TThreadPoolServer::getTaskExpiration() const { - return taskExpiration_; -} - -void TThreadPoolServer::setTaskExpiration(int64_t value) { - taskExpiration_ = value; -} - -}}} // apache::thrift::server http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d55608f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadPoolServer.h ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadPoolServer.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadPoolServer.h deleted file mode 100644 index 8a1fc16..0000000 --- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadPoolServer.h +++ /dev/null @@ -1,136 +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. - */ - -#ifndef _THRIFT_SERVER_TTHREADPOOLSERVER_H_ -#define _THRIFT_SERVER_TTHREADPOOLSERVER_H_ 1 - -#include <thrift/concurrency/ThreadManager.h> -#include <thrift/server/TServer.h> -#include <thrift/transport/TServerTransport.h> - -#include <boost/shared_ptr.hpp> - -namespace apache { namespace thrift { namespace server { - -using apache::thrift::concurrency::ThreadManager; -using apache::thrift::protocol::TProtocolFactory; -using apache::thrift::transport::TServerTransport; -using apache::thrift::transport::TTransportFactory; - -class TThreadPoolServer : public TServer { - public: - class Task; - - template<typename ProcessorFactory> - TThreadPoolServer( - const boost::shared_ptr<ProcessorFactory>& processorFactory, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - const boost::shared_ptr<ThreadManager>& threadManager, - THRIFT_OVERLOAD_IF(ProcessorFactory, TProcessorFactory)) : - TServer(processorFactory, serverTransport, transportFactory, - protocolFactory), - threadManager_(threadManager), - stop_(false), - timeout_(0), - taskExpiration_(0) {} - - template<typename Processor> - TThreadPoolServer( - const boost::shared_ptr<Processor>& processor, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - const boost::shared_ptr<ThreadManager>& threadManager, - THRIFT_OVERLOAD_IF(Processor, TProcessor)) : - TServer(processor, serverTransport, transportFactory, protocolFactory), - threadManager_(threadManager), - stop_(false), - timeout_(0), - taskExpiration_(0) {} - - template<typename ProcessorFactory> - TThreadPoolServer( - const boost::shared_ptr<ProcessorFactory>& processorFactory, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& inputTransportFactory, - const boost::shared_ptr<TTransportFactory>& outputTransportFactory, - const boost::shared_ptr<TProtocolFactory>& inputProtocolFactory, - const boost::shared_ptr<TProtocolFactory>& outputProtocolFactory, - const boost::shared_ptr<ThreadManager>& threadManager, - THRIFT_OVERLOAD_IF(ProcessorFactory, TProcessorFactory)) : - TServer(processorFactory, serverTransport, - inputTransportFactory, outputTransportFactory, - inputProtocolFactory, outputProtocolFactory), - threadManager_(threadManager), - stop_(false), - timeout_(0), - taskExpiration_(0) {} - - template<typename Processor> - TThreadPoolServer( - const boost::shared_ptr<Processor>& processor, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& inputTransportFactory, - const boost::shared_ptr<TTransportFactory>& outputTransportFactory, - const boost::shared_ptr<TProtocolFactory>& inputProtocolFactory, - const boost::shared_ptr<TProtocolFactory>& outputProtocolFactory, - const boost::shared_ptr<ThreadManager>& threadManager, - THRIFT_OVERLOAD_IF(Processor, TProcessor)) : - TServer(processor, serverTransport, - inputTransportFactory, outputTransportFactory, - inputProtocolFactory, outputProtocolFactory), - threadManager_(threadManager), - stop_(false), - timeout_(0), - taskExpiration_(0) {} - - virtual ~TThreadPoolServer(); - - virtual void serve(); - - virtual int64_t getTimeout() const; - - virtual void setTimeout(int64_t value); - - virtual void stop() { - stop_ = true; - serverTransport_->interrupt(); - } - - virtual int64_t getTaskExpiration() const; - - virtual void setTaskExpiration(int64_t value); - - protected: - - boost::shared_ptr<ThreadManager> threadManager_; - - volatile bool stop_; - - volatile int64_t timeout_; - - volatile int64_t taskExpiration_; - -}; - -}}} // apache::thrift::server - -#endif // #ifndef _THRIFT_SERVER_TTHREADPOOLSERVER_H_ http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d55608f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadedServer.cpp ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadedServer.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadedServer.cpp deleted file mode 100644 index 909c3ce..0000000 --- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadedServer.cpp +++ /dev/null @@ -1,241 +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 <thrift/server/TThreadedServer.h> -#include <thrift/transport/TTransportException.h> -#include <thrift/concurrency/PlatformThreadFactory.h> - -#include <string> -#include <iostream> - -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif - -namespace apache { namespace thrift { namespace server { - -using boost::shared_ptr; -using namespace std; -using namespace apache::thrift; -using namespace apache::thrift::protocol; -using namespace apache::thrift::transport; -using namespace apache::thrift::concurrency; - -class TThreadedServer::Task: public Runnable { - -public: - - Task(TThreadedServer& server, - shared_ptr<TProcessor> processor, - shared_ptr<TProtocol> input, - shared_ptr<TProtocol> output, - shared_ptr<TTransport> transport) : - server_(server), - processor_(processor), - input_(input), - output_(output), - transport_(transport) { - } - - ~Task() {} - - void run() { - boost::shared_ptr<TServerEventHandler> eventHandler = - server_.getEventHandler(); - void* connectionContext = NULL; - if (eventHandler) { - connectionContext = eventHandler->createContext(input_, output_); - } - try { - for (;;) { - if (eventHandler) { - eventHandler->processContext(connectionContext, transport_); - } - if (!processor_->process(input_, output_, connectionContext) || - !input_->getTransport()->peek()) { - break; - } - } - } catch (const TTransportException& ttx) { - if (ttx.getType() != TTransportException::END_OF_FILE) { - string errStr = string("TThreadedServer client died: ") + ttx.what(); - GlobalOutput(errStr.c_str()); - } - } catch (const std::exception &x) { - GlobalOutput.printf("TThreadedServer exception: %s: %s", - typeid(x).name(), x.what()); - } catch (...) { - GlobalOutput("TThreadedServer uncaught exception."); - } - if (eventHandler) { - eventHandler->deleteContext(connectionContext, input_, output_); - } - - try { - input_->getTransport()->close(); - } catch (TTransportException& ttx) { - string errStr = string("TThreadedServer input close failed: ") + ttx.what(); - GlobalOutput(errStr.c_str()); - } - try { - output_->getTransport()->close(); - } catch (TTransportException& ttx) { - string errStr = string("TThreadedServer output close failed: ") + ttx.what(); - GlobalOutput(errStr.c_str()); - } - - // Remove this task from parent bookkeeping - { - Synchronized s(server_.tasksMonitor_); - server_.tasks_.erase(this); - if (server_.tasks_.empty()) { - server_.tasksMonitor_.notify(); - } - } - - } - - private: - TThreadedServer& server_; - friend class TThreadedServer; - - shared_ptr<TProcessor> processor_; - shared_ptr<TProtocol> input_; - shared_ptr<TProtocol> output_; - shared_ptr<TTransport> transport_; -}; - -void TThreadedServer::init() { - stop_ = false; - - if (!threadFactory_) { - threadFactory_.reset(new PlatformThreadFactory); - } -} - -TThreadedServer::~TThreadedServer() {} - -void TThreadedServer::serve() { - - shared_ptr<TTransport> client; - shared_ptr<TTransport> inputTransport; - shared_ptr<TTransport> outputTransport; - shared_ptr<TProtocol> inputProtocol; - shared_ptr<TProtocol> outputProtocol; - - // Start the server listening - serverTransport_->listen(); - - // Run the preServe event - if (eventHandler_) { - eventHandler_->preServe(); - } - - while (!stop_) { - try { - client.reset(); - inputTransport.reset(); - outputTransport.reset(); - inputProtocol.reset(); - outputProtocol.reset(); - - // Fetch client from server - client = serverTransport_->accept(); - - // Make IO transports - inputTransport = inputTransportFactory_->getTransport(client); - outputTransport = outputTransportFactory_->getTransport(client); - inputProtocol = inputProtocolFactory_->getProtocol(inputTransport); - outputProtocol = outputProtocolFactory_->getProtocol(outputTransport); - - shared_ptr<TProcessor> processor = getProcessor(inputProtocol, - outputProtocol, client); - - TThreadedServer::Task* task = new TThreadedServer::Task(*this, - processor, - inputProtocol, - outputProtocol, - client); - - // Create a task - shared_ptr<Runnable> runnable = - shared_ptr<Runnable>(task); - - // Create a thread for this task - shared_ptr<Thread> thread = - shared_ptr<Thread>(threadFactory_->newThread(runnable)); - - // Insert thread into the set of threads - { - Synchronized s(tasksMonitor_); - tasks_.insert(task); - } - - // Start the thread! - thread->start(); - - } catch (TTransportException& ttx) { - if (inputTransport) { inputTransport->close(); } - if (outputTransport) { outputTransport->close(); } - if (client) { client->close(); } - if (!stop_ || ttx.getType() != TTransportException::INTERRUPTED) { - string errStr = string("TThreadedServer: TServerTransport died on accept: ") + ttx.what(); - GlobalOutput(errStr.c_str()); - } - continue; - } catch (TException& tx) { - if (inputTransport) { inputTransport->close(); } - if (outputTransport) { outputTransport->close(); } - if (client) { client->close(); } - string errStr = string("TThreadedServer: Caught TException: ") + tx.what(); - GlobalOutput(errStr.c_str()); - continue; - } catch (string s) { - if (inputTransport) { inputTransport->close(); } - if (outputTransport) { outputTransport->close(); } - if (client) { client->close(); } - string errStr = "TThreadedServer: Unknown exception: " + s; - GlobalOutput(errStr.c_str()); - break; - } - } - - // If stopped manually, make sure to close server transport - if (stop_) { - try { - serverTransport_->close(); - } catch (TException &tx) { - string errStr = string("TThreadedServer: Exception shutting down: ") + tx.what(); - GlobalOutput(errStr.c_str()); - } - try { - Synchronized s(tasksMonitor_); - while (!tasks_.empty()) { - tasksMonitor_.wait(); - } - } catch (TException &tx) { - string errStr = string("TThreadedServer: Exception joining workers: ") + tx.what(); - GlobalOutput(errStr.c_str()); - } - stop_ = false; - } - -} - -}}} // apache::thrift::server http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d55608f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadedServer.h ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadedServer.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadedServer.h deleted file mode 100644 index f965fcd..0000000 --- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/server/TThreadedServer.h +++ /dev/null @@ -1,145 +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. - */ - -#ifndef _THRIFT_SERVER_TTHREADEDSERVER_H_ -#define _THRIFT_SERVER_TTHREADEDSERVER_H_ 1 - -#include <thrift/server/TServer.h> -#include <thrift/transport/TServerTransport.h> -#include <thrift/concurrency/Monitor.h> -#include <thrift/concurrency/Thread.h> - -#include <boost/shared_ptr.hpp> - -namespace apache { namespace thrift { namespace server { - -using apache::thrift::TProcessor; -using apache::thrift::transport::TServerTransport; -using apache::thrift::transport::TTransportFactory; -using apache::thrift::concurrency::Monitor; -using apache::thrift::concurrency::ThreadFactory; - -class TThreadedServer : public TServer { - - public: - class Task; - - template<typename ProcessorFactory> - TThreadedServer(const boost::shared_ptr<ProcessorFactory>& processorFactory, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - THRIFT_OVERLOAD_IF(ProcessorFactory, TProcessorFactory)); - - template<typename ProcessorFactory> - TThreadedServer(const boost::shared_ptr<ProcessorFactory>& processorFactory, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - const boost::shared_ptr<ThreadFactory>& threadFactory, - THRIFT_OVERLOAD_IF(ProcessorFactory, TProcessorFactory)); - - template<typename Processor> - TThreadedServer(const boost::shared_ptr<Processor>& processor, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - THRIFT_OVERLOAD_IF(Processor, TProcessor)); - - template<typename Processor> - TThreadedServer(const boost::shared_ptr<Processor>& processor, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - const boost::shared_ptr<ThreadFactory>& threadFactory, - THRIFT_OVERLOAD_IF(Processor, TProcessor)); - - virtual ~TThreadedServer(); - - virtual void serve(); - - void stop() { - stop_ = true; - serverTransport_->interrupt(); - } - - protected: - void init(); - - boost::shared_ptr<ThreadFactory> threadFactory_; - volatile bool stop_; - - Monitor tasksMonitor_; - std::set<Task*> tasks_; - -}; - -template<typename ProcessorFactory> -TThreadedServer::TThreadedServer( - const boost::shared_ptr<ProcessorFactory>& processorFactory, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - THRIFT_OVERLOAD_IF_DEFN(ProcessorFactory, TProcessorFactory)) : - TServer(processorFactory, serverTransport, transportFactory, - protocolFactory) { - init(); -} - -template<typename ProcessorFactory> -TThreadedServer::TThreadedServer( - const boost::shared_ptr<ProcessorFactory>& processorFactory, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - const boost::shared_ptr<ThreadFactory>& threadFactory, - THRIFT_OVERLOAD_IF_DEFN(ProcessorFactory, TProcessorFactory)) : - TServer(processorFactory, serverTransport, transportFactory, - protocolFactory), - threadFactory_(threadFactory) { - init(); -} - -template<typename Processor> -TThreadedServer::TThreadedServer( - const boost::shared_ptr<Processor>& processor, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - THRIFT_OVERLOAD_IF_DEFN(Processor, TProcessor)) : - TServer(processor, serverTransport, transportFactory, protocolFactory) { - init(); -} - -template<typename Processor> -TThreadedServer::TThreadedServer( - const boost::shared_ptr<Processor>& processor, - const boost::shared_ptr<TServerTransport>& serverTransport, - const boost::shared_ptr<TTransportFactory>& transportFactory, - const boost::shared_ptr<TProtocolFactory>& protocolFactory, - const boost::shared_ptr<ThreadFactory>& threadFactory, - THRIFT_OVERLOAD_IF_DEFN(Processor, TProcessor)) : - TServer(processor, serverTransport, transportFactory, protocolFactory), - threadFactory_(threadFactory) { - init(); -} - -}}} // apache::thrift::server - -#endif // #ifndef _THRIFT_SERVER_TTHREADEDSERVER_H_ http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d55608f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/stamp-h2 ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/stamp-h2 b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/stamp-h2 deleted file mode 100644 index c089805..0000000 --- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/stamp-h2 +++ /dev/null @@ -1 +0,0 @@ -timestamp for lib/cpp/src/thrift/config.h http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d55608f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/thrift-config.h ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/thrift-config.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/thrift-config.h deleted file mode 100755 index b1bcccb..0000000 --- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/thrift-config.h +++ /dev/null @@ -1,24 +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. - */ - -#ifdef _WIN32 -# include <thrift/windows/config.h> -#else -# include <thrift/config.h> -#endif http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d55608f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/transport/PlatformSocket.h ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/transport/PlatformSocket.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/transport/PlatformSocket.h deleted file mode 100644 index 58d68a4..0000000 --- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/transport/PlatformSocket.h +++ /dev/null @@ -1,96 +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. - */ - -#ifndef _THRIFT_TRANSPORT_PLATFORM_SOCKET_H_ -# define _THRIFT_TRANSPORT_PLATFORM_SOCKET_H_ - -#ifdef _WIN32 -# define THRIFT_GET_SOCKET_ERROR ::WSAGetLastError() -# define THRIFT_EINPROGRESS WSAEINPROGRESS -# define THRIFT_EAGAIN WSAEWOULDBLOCK -# define THRIFT_EINTR WSAEINTR -# define THRIFT_ECONNRESET WSAECONNRESET -# define THRIFT_ENOTCONN WSAENOTCONN -# define THRIFT_ETIMEDOUT WSAETIMEDOUT -# define THRIFT_EWOULDBLOCK WSAEWOULDBLOCK -# define THRIFT_EPIPE WSAECONNRESET -# define THRIFT_NO_SOCKET_CACHING SO_EXCLUSIVEADDRUSE -# define THRIFT_SOCKET SOCKET -# define THRIFT_INVALID_SOCKET INVALID_SOCKET -# define THRIFT_SOCKETPAIR thrift_socketpair -# define THRIFT_FCNTL thrift_fcntl -# define THRIFT_O_NONBLOCK 1 -# define THRIFT_F_GETFL 0 -# define THRIFT_F_SETFL 1 -# define THRIFT_GETTIMEOFDAY thrift_gettimeofday -# define THRIFT_CLOSESOCKET closesocket -# define THRIFT_GAI_STRERROR gai_strerrorA -# define THRIFT_SSIZET ptrdiff_t -# define THRIFT_SNPRINTF _snprintf -# define THRIFT_SLEEP_SEC thrift_sleep -# define THRIFT_SLEEP_USEC thrift_usleep -# define THRIFT_TIMESPEC thrift_timespec -# define THRIFT_CTIME_R thrift_ctime_r -# define THRIFT_POLL thrift_poll -# if WINVER <= 0x0502 //XP, Server2003 -# define THRIFT_POLLFD thrift_pollfd -# define THRIFT_POLLIN 0x0300 -# define THRIFT_POLLOUT 0x0010 -# else //Vista, Win7... -# define THRIFT_POLLFD pollfd -# define THRIFT_POLLIN POLLIN -# define THRIFT_POLLOUT POLLOUT -# endif //WINVER -# define THRIFT_SHUT_RDWR SD_BOTH -#else //not _WIN32 -# include <errno.h> -# define THRIFT_GET_SOCKET_ERROR errno -# define THRIFT_EINTR EINTR -# define THRIFT_EINPROGRESS EINPROGRESS -# define THRIFT_ECONNRESET ECONNRESET -# define THRIFT_ENOTCONN ENOTCONN -# define THRIFT_ETIMEDOUT ETIMEDOUT -# define THRIFT_EWOULDBLOCK EWOULDBLOCK -# define THRIFT_EAGAIN EAGAIN -# define THRIFT_EPIPE EPIPE -# define THRIFT_NO_SOCKET_CACHING SO_REUSEADDR -# define THRIFT_SOCKET int -# define THRIFT_INVALID_SOCKET (-1) -# define THRIFT_SOCKETPAIR socketpair -# define THRIFT_FCNTL fcntl -# define THRIFT_O_NONBLOCK O_NONBLOCK -# define THRIFT_F_GETFL F_GETFL -# define THRIFT_F_SETFL F_SETFL -# define THRIFT_GETTIMEOFDAY gettimeofday -# define THRIFT_CLOSESOCKET close -# define THRIFT_GAI_STRERROR gai_strerror -# define THRIFT_SSIZET ssize_t -# define THRIFT_SNPRINTF snprintf -# define THRIFT_SLEEP_SEC sleep -# define THRIFT_SLEEP_USEC usleep -# define THRIFT_TIMESPEC timespec -# define THRIFT_CTIME_R ctime_r -# define THRIFT_POLL poll -# define THRIFT_POLLFD pollfd -# define THRIFT_POLLIN POLLIN -# define THRIFT_POLLOUT POLLOUT -# define THRIFT_SHUT_RDWR SHUT_RDWR -#endif - -#endif // _THRIFT_TRANSPORT_PLATFORM_SOCKET_H_ http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d55608f1/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/transport/TBufferTransports.cpp ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/transport/TBufferTransports.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/transport/TBufferTransports.cpp deleted file mode 100644 index a307748..0000000 --- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/thrift/transport/TBufferTransports.cpp +++ /dev/null @@ -1,391 +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 <cassert> -#include <algorithm> - -#include <thrift/transport/TBufferTransports.h> - -using std::string; - -namespace apache { namespace thrift { namespace transport { - - -uint32_t TBufferedTransport::readSlow(uint8_t* buf, uint32_t len) { - uint32_t have = static_cast<uint32_t>(rBound_ - rBase_); - - // We should only take the slow path if we can't satisfy the read - // with the data already in the buffer. - assert(have < len); - - // If we have some data in the buffer, copy it out and return it. - // We have to return it without attempting to read more, since we aren't - // guaranteed that the underlying transport actually has more data, so - // attempting to read from it could block. - if (have > 0) { - memcpy(buf, rBase_, have); - setReadBuffer(rBuf_.get(), 0); - return have; - } - - // No data is available in our buffer. - // Get more from underlying transport up to buffer size. - // Note that this makes a lot of sense if len < rBufSize_ - // and almost no sense otherwise. TODO(dreiss): Fix that - // case (possibly including some readv hotness). - setReadBuffer(rBuf_.get(), transport_->read(rBuf_.get(), rBufSize_)); - - // Hand over whatever we have. - uint32_t give = (std::min)(len, static_cast<uint32_t>(rBound_ - rBase_)); - memcpy(buf, rBase_, give); - rBase_ += give; - - return give; -} - -void TBufferedTransport::writeSlow(const uint8_t* buf, uint32_t len) { - uint32_t have_bytes = static_cast<uint32_t>(wBase_ - wBuf_.get()); - uint32_t space = static_cast<uint32_t>(wBound_ - wBase_); - // We should only take the slow path if we can't accomodate the write - // with the free space already in the buffer. - assert(wBound_ - wBase_ < static_cast<ptrdiff_t>(len)); - - // Now here's the tricky question: should we copy data from buf into our - // internal buffer and write it from there, or should we just write out - // the current internal buffer in one syscall and write out buf in another. - // If our currently buffered data plus buf is at least double our buffer - // size, we will have to do two syscalls no matter what (except in the - // degenerate case when our buffer is empty), so there is no use copying. - // Otherwise, there is sort of a sliding scale. If we have N-1 bytes - // buffered and need to write 2, it would be crazy to do two syscalls. - // On the other hand, if we have 2 bytes buffered and are writing 2N-3, - // we can save a syscall in the short term by loading up our buffer, writing - // it out, and copying the rest of the bytes into our buffer. Of course, - // if we get another 2-byte write, we haven't saved any syscalls at all, - // and have just copied nearly 2N bytes for nothing. Finding a perfect - // policy would require predicting the size of future writes, so we're just - // going to always eschew syscalls if we have less than 2N bytes to write. - - // The case where we have to do two syscalls. - // This case also covers the case where the buffer is empty, - // but it is clearer (I think) to think of it as two separate cases. - if ((have_bytes + len >= 2*wBufSize_) || (have_bytes == 0)) { - // TODO(dreiss): writev - if (have_bytes > 0) { - transport_->write(wBuf_.get(), have_bytes); - } - transport_->write(buf, len); - wBase_ = wBuf_.get(); - return; - } - - // Fill up our internal buffer for a write. - memcpy(wBase_, buf, space); - buf += space; - len -= space; - transport_->write(wBuf_.get(), wBufSize_); - - // Copy the rest into our buffer. - assert(len < wBufSize_); - memcpy(wBuf_.get(), buf, len); - wBase_ = wBuf_.get() + len; - return; -} - -const uint8_t* TBufferedTransport::borrowSlow(uint8_t* buf, uint32_t* len) { - (void) buf; - (void) len; - // Simply return NULL. We don't know if there is actually data available on - // the underlying transport, so calling read() might block. - return NULL; -} - -void TBufferedTransport::flush() { - // Write out any data waiting in the write buffer. - uint32_t have_bytes = static_cast<uint32_t>(wBase_ - wBuf_.get()); - if (have_bytes > 0) { - // Note that we reset wBase_ prior to the underlying write - // to ensure we're in a sane state (i.e. internal buffer cleaned) - // if the underlying write throws up an exception - wBase_ = wBuf_.get(); - transport_->write(wBuf_.get(), have_bytes); - } - - // Flush the underlying transport. - transport_->flush(); -} - - -uint32_t TFramedTransport::readSlow(uint8_t* buf, uint32_t len) { - uint32_t want = len; - uint32_t have = static_cast<uint32_t>(rBound_ - rBase_); - - // We should only take the slow path if we can't satisfy the read - // with the data already in the buffer. - assert(have < want); - - // If we have some data in the buffer, copy it out and return it. - // We have to return it without attempting to read more, since we aren't - // guaranteed that the underlying transport actually has more data, so - // attempting to read from it could block. - if (have > 0) { - memcpy(buf, rBase_, have); - setReadBuffer(rBuf_.get(), 0); - return have; - } - - // Read another frame. - if (!readFrame()) { - // EOF. No frame available. - return 0; - } - - // TODO(dreiss): Should we warn when reads cross frames? - - // Hand over whatever we have. - uint32_t give = (std::min)(want, static_cast<uint32_t>(rBound_ - rBase_)); - memcpy(buf, rBase_, give); - rBase_ += give; - want -= give; - - return (len - want); -} - -bool TFramedTransport::readFrame() { - // TODO(dreiss): Think about using readv here, even though it would - // result in (gasp) read-ahead. - - // Read the size of the next frame. - // We can't use readAll(&sz, sizeof(sz)), since that always throws an - // exception on EOF. We want to throw an exception only if EOF occurs after - // partial size data. - int32_t sz; - uint32_t size_bytes_read = 0; - while (size_bytes_read < sizeof(sz)) { - uint8_t* szp = reinterpret_cast<uint8_t*>(&sz) + size_bytes_read; - uint32_t bytes_read = transport_->read( - szp, - static_cast<uint32_t>(sizeof(sz)) - size_bytes_read); - if (bytes_read == 0) { - if (size_bytes_read == 0) { - // EOF before any data was read. - return false; - } else { - // EOF after a partial frame header. Raise an exception. - throw TTransportException(TTransportException::END_OF_FILE, - "No more data to read after " - "partial frame header."); - } - } - size_bytes_read += bytes_read; - } - - sz = ntohl(sz); - - if (sz < 0) { - throw TTransportException("Frame size has negative value"); - } - - // Read the frame payload, and reset markers. - if (sz > static_cast<int32_t>(rBufSize_)) { - rBuf_.reset(new uint8_t[sz]); - rBufSize_ = sz; - } - transport_->readAll(rBuf_.get(), sz); - setReadBuffer(rBuf_.get(), sz); - return true; -} - -void TFramedTransport::writeSlow(const uint8_t* buf, uint32_t len) { - // Double buffer size until sufficient. - uint32_t have = static_cast<uint32_t>(wBase_ - wBuf_.get()); - uint32_t new_size = wBufSize_; - if (len + have < have /* overflow */ || len + have > 0x7fffffff) { - throw TTransportException(TTransportException::BAD_ARGS, - "Attempted to write over 2 GB to TFramedTransport."); - } - while (new_size < len + have) { - new_size = new_size > 0 ? new_size * 2 : 1; - } - - // TODO(dreiss): Consider modifying this class to use malloc/free - // so we can use realloc here. - - // Allocate new buffer. - uint8_t* new_buf = new uint8_t[new_size]; - - // Copy the old buffer to the new one. - memcpy(new_buf, wBuf_.get(), have); - - // Now point buf to the new one. - wBuf_.reset(new_buf); - wBufSize_ = new_size; - wBase_ = wBuf_.get() + have; - wBound_ = wBuf_.get() + wBufSize_; - - // Copy the data into the new buffer. - memcpy(wBase_, buf, len); - wBase_ += len; -} - -void TFramedTransport::flush() { - int32_t sz_hbo, sz_nbo; - assert(wBufSize_ > sizeof(sz_nbo)); - - // Slip the frame size into the start of the buffer. - sz_hbo = static_cast<uint32_t>(wBase_ - (wBuf_.get() + sizeof(sz_nbo))); - sz_nbo = (int32_t)htonl((uint32_t)(sz_hbo)); - memcpy(wBuf_.get(), (uint8_t*)&sz_nbo, sizeof(sz_nbo)); - - if (sz_hbo > 0) { - // Note that we reset wBase_ (with a pad for the frame size) - // prior to the underlying write to ensure we're in a sane state - // (i.e. internal buffer cleaned) if the underlying write throws - // up an exception - wBase_ = wBuf_.get() + sizeof(sz_nbo); - - // Write size and frame body. - transport_->write( - wBuf_.get(), - static_cast<uint32_t>(sizeof(sz_nbo))+sz_hbo); - } - - // Flush the underlying transport. - transport_->flush(); -} - -uint32_t TFramedTransport::writeEnd() { - return static_cast<uint32_t>(wBase_ - wBuf_.get()); -} - -const uint8_t* TFramedTransport::borrowSlow(uint8_t* buf, uint32_t* len) { - (void) buf; - (void) len; - // Don't try to be clever with shifting buffers. - // If the fast path failed let the protocol use its slow path. - // Besides, who is going to try to borrow across messages? - return NULL; -} - -uint32_t TFramedTransport::readEnd() { - // include framing bytes - return static_cast<uint32_t>(rBound_ - rBuf_.get() + sizeof(uint32_t)); -} - -void TMemoryBuffer::computeRead(uint32_t len, uint8_t** out_start, uint32_t* out_give) { - // Correct rBound_ so we can use the fast path in the future. - rBound_ = wBase_; - - // Decide how much to give. - uint32_t give = (std::min)(len, available_read()); - - *out_start = rBase_; - *out_give = give; - - // Preincrement rBase_ so the caller doesn't have to. - rBase_ += give; -} - -uint32_t TMemoryBuffer::readSlow(uint8_t* buf, uint32_t len) { - uint8_t* start; - uint32_t give; - computeRead(len, &start, &give); - - // Copy into the provided buffer. - memcpy(buf, start, give); - - return give; -} - -uint32_t TMemoryBuffer::readAppendToString(std::string& str, uint32_t len) { - // Don't get some stupid assertion failure. - if (buffer_ == NULL) { - return 0; - } - - uint8_t* start; - uint32_t give; - computeRead(len, &start, &give); - - // Append to the provided string. - str.append((char*)start, give); - - return give; -} - -void TMemoryBuffer::ensureCanWrite(uint32_t len) { - // Check available space - uint32_t avail = available_write(); - if (len <= avail) { - return; - } - - if (!owner_) { - throw TTransportException("Insufficient space in external MemoryBuffer"); - } - - // Grow the buffer as necessary. - uint32_t new_size = bufferSize_; - while (len > avail) { - new_size = new_size > 0 ? new_size * 2 : 1; - avail = available_write() + (new_size - bufferSize_); - } - - // Allocate into a new pointer so we don't bork ours if it fails. - void* new_buffer = std::realloc(buffer_, new_size); - if (new_buffer == NULL) { - throw std::bad_alloc(); - } - bufferSize_ = new_size; - - ptrdiff_t offset = (uint8_t*)new_buffer - buffer_; - buffer_ += offset; - rBase_ += offset; - rBound_ += offset; - wBase_ += offset; - wBound_ = buffer_ + bufferSize_; -} - -void TMemoryBuffer::writeSlow(const uint8_t* buf, uint32_t len) { - ensureCanWrite(len); - - // Copy into the buffer and increment wBase_. - memcpy(wBase_, buf, len); - wBase_ += len; -} - -void TMemoryBuffer::wroteBytes(uint32_t len) { - uint32_t avail = available_write(); - if (len > avail) { - throw TTransportException("Client wrote more bytes than size of buffer."); - } - wBase_ += len; -} - -const uint8_t* TMemoryBuffer::borrowSlow(uint8_t* buf, uint32_t* len) { - (void) buf; - rBound_ = wBase_; - if (available_read() >= *len) { - *len = available_read(); - return rBase_; - } - return NULL; -} - -}}} // apache::thrift::transport
