mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
add jaeger support, link hot container & req span (#840)
* add jaeger support, link hot container & req span * adds jaeger support now with FN_JAEGER_URL, there's a simple tutorial in the operating/metrics.md file now and it's pretty easy to get up and running. * links a hot request span to a hot container span. when we change this to sample at a lower ratio we'll need to finagle the hot container span to always sample or something, otherwise we'll hide that info. at least, since we're sampling at 100% for now if this is flipped on, can see freeze/unfreeze etc. if they hit. this is useful for debugging. note that zipkin's exporter does not follow the link at all, hence jaeger... and they're backed by the Cloud Empire now (CNCF) so we'll probably use it anyway. * vendor: add thrift for jaeger
This commit is contained in:
61
vendor/git.apache.org/thrift.git/contrib/transport-sample/README.md
generated
vendored
Normal file
61
vendor/git.apache.org/thrift.git/contrib/transport-sample/README.md
generated
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
Thrift transport sample project
|
||||
-------------------------------
|
||||
|
||||
This cross-platform project has been built with Windows Visual Studio 10 and
|
||||
OSX 10.7.1's g++. The client and server support socket and pipe transports
|
||||
through command-line switches.
|
||||
|
||||
Windows supports both named & anonymous pipes; *NIX gets only named
|
||||
'pipes' at this time.
|
||||
|
||||
Windows-only at this time:
|
||||
The client & server are double-ended. Both sides run a server and client to
|
||||
enable full duplex bidirectional event signaling. They are simple command
|
||||
line apps. The server runs until it's aborted (Ctl-C). The client connects to
|
||||
the server, informs the server of its listening pipe/port, runs some more RPCs
|
||||
and exits. The server also makes RPC calls to the client to demonstrate
|
||||
bidirectional operation.
|
||||
|
||||
Prequisites:
|
||||
Boost -- tested with Boost 1.47, other versions may work.
|
||||
libthrift library -- build the library under "thrift/lib/cpp/"
|
||||
thrift IDL compiler -- download from http://thrift.apache.org/download/
|
||||
or build from "thrift/compiler/cpp". The IDL compiler version should
|
||||
match the thrift source distribution's version. For instance, thrift-0.9.0
|
||||
has a different directory structure than thrift-0.8.0 and the generated
|
||||
files are not compatible.
|
||||
|
||||
Note: Bulding the thrift IDL compiler and library are beyond the scope
|
||||
of this article. Please refer to the Thrift documentation in the respective
|
||||
directories and online.
|
||||
|
||||
|
||||
Microsoft Windows with Visual Studio 10
|
||||
----------------------------------------
|
||||
Copy the IDL compiler 'thrift.exe' to this project folder or to a location in the path.
|
||||
Run thriftme.bat to generate the interface source from the thrift files.
|
||||
|
||||
Open transport-sample.sln and...
|
||||
Adapt the Boost paths for the client and server projects. Right-click on each project, select
|
||||
Properties, then:
|
||||
Configuration Properties -> C/C++ -> General -> Additional Include Directories
|
||||
Configuration Properties -> Linker -> General -> Additional Include Directories
|
||||
|
||||
The stock path assumes that Boost is located at the same level as the thrift repo root.
|
||||
|
||||
Run the following in separate command prompts from the Release or Debug
|
||||
build folder:
|
||||
server.exe -np test
|
||||
client.exe -np test
|
||||
|
||||
|
||||
*NIX flavors
|
||||
------------
|
||||
Build the thrift cpp library.
|
||||
Build the IDL compiler and copy it to this project folder.
|
||||
Run thriftme.sh to generate the interface source from the thrift files.
|
||||
Run 'make'
|
||||
|
||||
Run the following in separate shells:
|
||||
server/server -np /tmp/test
|
||||
client/client -np /tmp/test
|
||||
39
vendor/git.apache.org/thrift.git/contrib/transport-sample/Sample.thrift
generated
vendored
Normal file
39
vendor/git.apache.org/thrift.git/contrib/transport-sample/Sample.thrift
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
transport-sample thrift IDL file .
|
||||
Execute thriftme.bat under Windows to generate the cpp stubs from this IDL.
|
||||
*/
|
||||
|
||||
// See thrift/tutorial/tutorial.thrift and shared.thrift for more extensive examples.
|
||||
|
||||
|
||||
namespace cpp Sample
|
||||
namespace java Sample
|
||||
namespace perl Sample
|
||||
|
||||
//This struct is not used in the sample. Shown here for illustrative purposes only.
|
||||
//
|
||||
struct SampleStruct
|
||||
{
|
||||
1: i32 key
|
||||
2: string value
|
||||
}
|
||||
|
||||
|
||||
//A service contains the RPC(s).
|
||||
//
|
||||
service SampleService
|
||||
{
|
||||
string HelloThere(1:string HelloString),
|
||||
void ServerDoSomething(),
|
||||
|
||||
//Client calls this to tell server which port to connect back on.
|
||||
void ClientSideListenPort(1:i16 Port),
|
||||
//Named pipe version
|
||||
void ClientSidePipeName(1:string name),
|
||||
}
|
||||
|
||||
//Sample RPC on the 'client' side that the master server can call.
|
||||
service SampleCallback
|
||||
{
|
||||
void pingclient(),
|
||||
}
|
||||
37
vendor/git.apache.org/thrift.git/contrib/transport-sample/ThriftCommon.cpp
generated
vendored
Normal file
37
vendor/git.apache.org/thrift.git/contrib/transport-sample/ThriftCommon.cpp
generated
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
// ThriftCommon.cpp : Common functions for sample Thrift client and server
|
||||
//
|
||||
|
||||
#include "ThriftCommon.h"
|
||||
|
||||
namespace thriftcommon
|
||||
{
|
||||
//----------------------------------------------------------------------------
|
||||
//Launch child process and pass R/W anonymous pipe handles on cmd line.
|
||||
//This is a simple example and does not include elevation or other
|
||||
//advanced features.
|
||||
//
|
||||
bool LaunchAnonPipeChild(std::string app, boost::shared_ptr<TServerTransport> transport)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
PROCESS_INFORMATION pi;
|
||||
STARTUPINFOA si;
|
||||
GetStartupInfoA(&si); //set startupinfo for the spawned process
|
||||
char handles[MAX_PATH]; //Stores pipe handles converted to text
|
||||
|
||||
sprintf(handles, "%s %d %d", app.c_str(),
|
||||
(int)boost::shared_dynamic_cast<TPipeServer>(transport)->getClientRdPipeHandle(),
|
||||
(int)boost::shared_dynamic_cast<TPipeServer>(transport)->getClientWrtPipeHandle());
|
||||
|
||||
//spawn the child process
|
||||
if (!CreateProcessA(NULL, handles, NULL,NULL,TRUE,0,NULL,NULL,&si,&pi))
|
||||
{
|
||||
GlobalOutput.perror("TPipeServer CreateProcess failed, GLE=", GetLastError());
|
||||
return false;
|
||||
}
|
||||
|
||||
CloseHandle(pi.hThread);
|
||||
CloseHandle(pi.hProcess);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
}
|
||||
207
vendor/git.apache.org/thrift.git/contrib/transport-sample/ThriftCommon.h
generated
vendored
Normal file
207
vendor/git.apache.org/thrift.git/contrib/transport-sample/ThriftCommon.h
generated
vendored
Normal file
@@ -0,0 +1,207 @@
|
||||
// ThriftCommon.h : Common includes, namespaces and templates
|
||||
// for sample Thrift client and server
|
||||
//
|
||||
// Add the following paths to the Project's properties:
|
||||
//
|
||||
// Configuration Properties -> C/C++ -> General-> Additional Include Directories --
|
||||
// ../;../../../lib/cpp/src;../../../../boost;../../../../boost/boost/tr1;
|
||||
//
|
||||
// Configuration Properties -> Linker -> General -> Additional Library Directories --
|
||||
// ../../../lib/cpp/$(Configuration);../../../../Boost/lib
|
||||
//
|
||||
// Configuration Properties -> Linker -> Input -> Additional Dependencies --
|
||||
// libthrift.lib
|
||||
//
|
||||
// ... adjust relative paths as necessary.
|
||||
//
|
||||
|
||||
#ifdef _WIN32 //thrift is crashing when using boost threads on Mac OSX
|
||||
# define USE_BOOST_THREAD 1
|
||||
# include <boost/thread.hpp>
|
||||
#else
|
||||
# include <sys/socket.h>
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Required Includes
|
||||
//'server' side #includes
|
||||
#include <thrift/concurrency/ThreadManager.h>
|
||||
#include <thrift/concurrency/PlatformThreadFactory.h>
|
||||
#include <thrift/server/TThreadPoolServer.h>
|
||||
#include <thrift/server/TSimpleServer.h>
|
||||
//'client' side #includes
|
||||
#include <thrift/transport/TPipeServer.h>
|
||||
#include <thrift/transport/TPipe.h>
|
||||
#include <thrift/transport/TBufferTransports.h>
|
||||
#include <thrift/transport/TSocket.h>
|
||||
#include <thrift/transport/TTransport.h>
|
||||
|
||||
#include <thrift/protocol/TBinaryProtocol.h>
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Required Namespaces
|
||||
//'server' side namespaces
|
||||
using namespace apache::thrift::server;
|
||||
using namespace apache::thrift::concurrency;
|
||||
//common namespaces
|
||||
using namespace apache::thrift;
|
||||
using namespace apache::thrift::protocol;
|
||||
using namespace apache::thrift::transport;
|
||||
//using namespace boost; //using ns boost can introduce type conflicts
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
namespace thriftcommon
|
||||
{
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//Start the thrift 'server' (both server & client side run one for bidir event signaling)
|
||||
// *** This function template will block ***
|
||||
//
|
||||
template <class MyHandler, class MyProcessor>
|
||||
void RunThriftServer (boost::shared_ptr<MyHandler> hndlr,
|
||||
int NumThreads,
|
||||
boost::shared_ptr<TServerTransport> transport,
|
||||
boost::shared_ptr<TServer> &server)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
if (!hndlr.get())
|
||||
throw std::exception("RunThriftServer() invalid handler");
|
||||
if (!transport.get())
|
||||
throw std::exception("RunThriftServer() invalid transport");
|
||||
#else
|
||||
if ( !hndlr.get() || !transport.get() )
|
||||
throw std::exception();
|
||||
#endif
|
||||
|
||||
boost::shared_ptr<MyHandler> handler(hndlr);
|
||||
boost::shared_ptr<TProcessor> processor(new MyProcessor(handler));
|
||||
boost::shared_ptr<TTransportFactory> tfactory(new TBufferedTransportFactory());
|
||||
boost::shared_ptr<TProtocolFactory> pfactory(new TBinaryProtocolFactory());
|
||||
|
||||
if(NumThreads <= 1)
|
||||
{ //Single-threaded server
|
||||
server.reset(new TSimpleServer(processor, transport, tfactory, pfactory));
|
||||
}
|
||||
else
|
||||
{ //Multi-threaded server
|
||||
boost::shared_ptr<ThreadManager> threadManager = ThreadManager::newSimpleThreadManager(NumThreads);
|
||||
boost::shared_ptr<PlatformThreadFactory> threadFactory = boost::shared_ptr<PlatformThreadFactory>(new PlatformThreadFactory());
|
||||
threadManager->threadFactory(threadFactory);
|
||||
threadManager->start();
|
||||
server.reset(new TThreadPoolServer(processor, transport, tfactory, pfactory, threadManager));
|
||||
}
|
||||
|
||||
printf("Starting the 'server'...\n");
|
||||
server->serve();
|
||||
printf("done.\n");
|
||||
}
|
||||
|
||||
// Thrift server wrapper function that accepts a pipe name.
|
||||
// A handler must be passed in to this version.
|
||||
template <class MyHandler, class MyProcessor>
|
||||
void RunThriftServer (boost::shared_ptr<MyHandler> hndlr, int NumThreads, std::string pipename, boost::shared_ptr<TServer> &svr)
|
||||
{
|
||||
#ifndef _WIN32 //Mac, *nix
|
||||
unlink(pipename.c_str());
|
||||
#endif
|
||||
boost::shared_ptr<TServerTransport> transport(new TPipeServer(pipename, 1024, NumThreads)); //Named pipe
|
||||
RunThriftServer<MyHandler, MyProcessor>(hndlr, NumThreads, transport, svr);
|
||||
}
|
||||
|
||||
// Thrift server wrapper function that accepts a pipe name.
|
||||
// This version instantiates its own handler.
|
||||
template <class MyHandler, class MyProcessor>
|
||||
void RunThriftServer (int NumThreads, std::string pipename)
|
||||
{
|
||||
boost::shared_ptr<MyHandler> handler(new MyHandler());
|
||||
boost::shared_ptr<TServer> server;
|
||||
|
||||
RunThriftServer<MyHandler, MyProcessor>(handler, NumThreads, pipename, server);
|
||||
}
|
||||
|
||||
// Thrift server wrapper function that accepts a socket port number.
|
||||
// A handler must be passed in to this version.
|
||||
template <class MyHandler, class MyProcessor>
|
||||
void RunThriftServer (boost::shared_ptr<MyHandler> hndlr, int NumThreads, int Port)
|
||||
{
|
||||
boost::shared_ptr<TServerTransport> transport(new TServerSocket(Port));
|
||||
boost::shared_ptr<TServer> server;
|
||||
RunThriftServer<MyHandler, MyProcessor>(hndlr, NumThreads, transport, server);
|
||||
}
|
||||
|
||||
// Thrift server wrapper function that accepts a socket port number.
|
||||
// This version instantiates its own handler.
|
||||
template <class MyHandler, class MyProcessor>
|
||||
void RunThriftServer (int NumThreads, int Port)
|
||||
{
|
||||
boost::shared_ptr<MyHandler> handler(new MyHandler());
|
||||
|
||||
RunThriftServer<MyHandler, MyProcessor>(handler, NumThreads, Port);
|
||||
}
|
||||
|
||||
//
|
||||
template <class MyHandler, class MyProcessor>
|
||||
void RunThriftServer (boost::shared_ptr<MyHandler> hndlr, int NumThreads, boost::shared_ptr<TServerTransport> transport)
|
||||
{
|
||||
boost::shared_ptr<TServer> server;
|
||||
RunThriftServer<MyHandler, MyProcessor>(hndlr, NumThreads, transport, server);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//Connect to thrift 'server' - Socket version
|
||||
//(both server & client side run one for bidir event signaling)
|
||||
//
|
||||
template <class MyClient, class MyTransport>
|
||||
void ConnectToServer (boost::shared_ptr<MyClient> &client, boost::shared_ptr<MyTransport> &transport, int Port)
|
||||
{
|
||||
//Client side connection using sockets transport.
|
||||
boost::shared_ptr<TTransport> socket(new TSocket("localhost", Port));
|
||||
transport.reset(new TBufferedTransport(socket));
|
||||
boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
|
||||
|
||||
client.reset(new MyClient(protocol));
|
||||
}
|
||||
|
||||
//Connect to thrift 'server' - Named Pipe version
|
||||
template <class MyClient, class MyTransport>
|
||||
void ConnectToServer (boost::shared_ptr<MyClient> &client, boost::shared_ptr<MyTransport> &transport, std::string pipename)
|
||||
{
|
||||
//Client side connection using Named Pipe transport.
|
||||
boost::shared_ptr<TTransport> pipe(new TPipe(pipename));
|
||||
transport.reset(new TBufferedTransport(pipe));
|
||||
boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
|
||||
|
||||
client.reset(new MyClient(protocol));
|
||||
}
|
||||
|
||||
//Connect to thrift 'server' - Anonymous Pipe version
|
||||
//Currently only supported under Windows
|
||||
#ifdef _WIN32
|
||||
template <class MyClient, class MyTransport>
|
||||
void ConnectToServer (boost::shared_ptr<MyClient> &client, boost::shared_ptr<MyTransport> &transport, HANDLE RdPipe, HANDLE WrtPipe)
|
||||
{
|
||||
//Client side connection using sockets transport.
|
||||
#ifdef _WIN32
|
||||
boost::shared_ptr<TTransport> pipe(new TPipe((int)RdPipe, (int)WrtPipe));
|
||||
transport.reset(new TBufferedTransport(pipe));
|
||||
#else
|
||||
boost::shared_ptr<TTransport> socket(new TSocket("localhost"));
|
||||
transport.reset(new TBufferedTransport(socket));
|
||||
#endif
|
||||
boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
|
||||
|
||||
client.reset(new MyClient(protocol));
|
||||
}
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//Launch child process and pass R/W anonymous pipe handles on cmd line.
|
||||
//Currently only supported under Windows
|
||||
#ifdef _WIN32
|
||||
bool LaunchAnonPipeChild(std::string app, boost::shared_ptr<TServerTransport> transport);
|
||||
#endif
|
||||
}
|
||||
40
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/ReadMe.txt
generated
vendored
Normal file
40
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/ReadMe.txt
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
========================================================================
|
||||
CONSOLE APPLICATION : client Project Overview
|
||||
========================================================================
|
||||
|
||||
AppWizard has created this client application for you.
|
||||
|
||||
This file contains a summary of what you will find in each of the files that
|
||||
make up your client application.
|
||||
|
||||
|
||||
client.vcxproj
|
||||
This is the main project file for VC++ projects generated using an Application Wizard.
|
||||
It contains information about the version of Visual C++ that generated the file, and
|
||||
information about the platforms, configurations, and project features selected with the
|
||||
Application Wizard.
|
||||
|
||||
client.vcxproj.filters
|
||||
This is the filters file for VC++ projects generated using an Application Wizard.
|
||||
It contains information about the association between the files in your project
|
||||
and the filters. This association is used in the IDE to show grouping of files with
|
||||
similar extensions under a specific node (for e.g. ".cpp" files are associated with the
|
||||
"Source Files" filter).
|
||||
|
||||
client.cpp
|
||||
This is the main application source file.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other standard files:
|
||||
|
||||
StdAfx.h, StdAfx.cpp
|
||||
These files are used to build a precompiled header (PCH) file
|
||||
named client.pch and a precompiled types file named StdAfx.obj.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other notes:
|
||||
|
||||
AppWizard uses "TODO:" comments to indicate parts of the source code you
|
||||
should add to or customize.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
195
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/client.cpp
generated
vendored
Normal file
195
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/client.cpp
generated
vendored
Normal file
@@ -0,0 +1,195 @@
|
||||
// client->cpp : Defines the entry point for the console application.
|
||||
//
|
||||
// sample client command line app using Thrift IPC.
|
||||
// Quick n Dirty example, may not have very robust error handling
|
||||
// for the sake of simplicity.
|
||||
|
||||
#ifdef _WIN32
|
||||
# include "stdafx.h"
|
||||
#else
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//Include this before the generated includes
|
||||
#include "ThriftCommon.h"
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//Tailor these to your generated files
|
||||
#include "../gen-cpp/SampleService.h"
|
||||
#include "../gen-cpp/SampleCallback.h"
|
||||
|
||||
using namespace Sample; //declared in .thrift file
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
void ClientListenerThreadProc();
|
||||
bool bSocket = false;
|
||||
bool bAnonPipe = false;
|
||||
int srvPort;
|
||||
std::string pipename;
|
||||
std::string pipename_client;
|
||||
#ifdef _WIN32
|
||||
HANDLE hConsole;
|
||||
#endif
|
||||
|
||||
//Customized version of printf that changes the text color
|
||||
//This depends on hConsole global being initialized
|
||||
void hlprintf(const char* _Format, ...)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
SetConsoleTextAttribute(hConsole, 0xE);
|
||||
#endif
|
||||
va_list ap;
|
||||
int r;
|
||||
va_start (ap, _Format);
|
||||
r = vprintf (_Format, ap);
|
||||
va_end (ap);
|
||||
#ifdef _WIN32
|
||||
SetConsoleTextAttribute(hConsole, 7);
|
||||
#endif
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Client-side RPC implementations: Called by the server to the client for
|
||||
// bidirectional eventing.
|
||||
//
|
||||
class SampleCallbackHandler : virtual public SampleCallbackIf {
|
||||
public:
|
||||
SampleCallbackHandler() {
|
||||
// initialization goes here
|
||||
}
|
||||
|
||||
void pingclient()
|
||||
{
|
||||
hlprintf("<<<Ping received from server (server-to-client event).\n");
|
||||
}
|
||||
|
||||
};
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
int _tmain(int argc, _TCHAR* argv[])
|
||||
#else
|
||||
int main(int argc, char **argv)
|
||||
#endif
|
||||
{
|
||||
//Process cmd line args to determine named vs anon pipes.
|
||||
bool usage = false;
|
||||
#ifdef _WIN32
|
||||
HANDLE ReadPipe, WritePipe;
|
||||
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
#endif
|
||||
|
||||
//Process command line params
|
||||
if(argc > 1)
|
||||
{
|
||||
if(_tcscmp(argv[1], TEXT("-sp")) == 0)
|
||||
{ //Socket Port specified
|
||||
srvPort = _tstoi(argv[2]);
|
||||
bSocket = true;
|
||||
}
|
||||
else if(_tcscmp(argv[1], TEXT("-np")) == 0)
|
||||
{ //Named Pipe specified
|
||||
#ifdef _WIN32
|
||||
std::wstring wpipe(argv[2]);
|
||||
pipename.resize(wpipe.length());
|
||||
std::copy(wpipe.begin(), wpipe.end(), pipename.begin());
|
||||
#else
|
||||
pipename = argv[2];
|
||||
#endif
|
||||
pipename_client = pipename + "_client";
|
||||
}
|
||||
else if(argc == 3)
|
||||
{ //Anonymous Pipe specified
|
||||
#ifdef _WIN32
|
||||
ReadPipe = (HANDLE)_tstoi(argv[1]);
|
||||
WritePipe = (HANDLE)_tstoi(argv[2]);
|
||||
bAnonPipe = true;
|
||||
#else
|
||||
printf("Anonymous pipes not (yet) supported under *NIX\n");
|
||||
#endif
|
||||
}
|
||||
else
|
||||
usage = true;
|
||||
}
|
||||
else
|
||||
usage = true;
|
||||
|
||||
if(usage)
|
||||
{
|
||||
hlprintf("Thrift sample client usage:\n\n");
|
||||
hlprintf("Socket Port to connect to: -sp <port#>\n");
|
||||
hlprintf("Named Pipe to connect to: -np <pipename> (e.g. affpipe)\n");
|
||||
hlprintf("Anonymous Pipe (must be launched by anon pipe creator):\n");
|
||||
hlprintf(" <Read Handle> <Write Handle>\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Client side connection to server.
|
||||
boost::shared_ptr<SampleServiceClient> client; //Client class from Thrift-generated code.
|
||||
boost::shared_ptr<TTransport> transport;
|
||||
|
||||
if(bSocket)
|
||||
{ //Socket transport
|
||||
#ifdef _WIN32
|
||||
TWinsockSingleton::create();
|
||||
#endif
|
||||
hlprintf("Using socket transport port %d\n", srvPort);
|
||||
thriftcommon::ConnectToServer<SampleServiceClient, TTransport>(client, transport, srvPort);
|
||||
}
|
||||
else if(!bAnonPipe)
|
||||
{
|
||||
hlprintf("Using Named Pipe %s\n", pipename.c_str());
|
||||
thriftcommon::ConnectToServer<SampleServiceClient, TTransport>(client, transport, pipename);
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef _WIN32
|
||||
hlprintf("Using Anonymous Pipe transport\n");
|
||||
thriftcommon::ConnectToServer<SampleServiceClient, TTransport>(client, transport, ReadPipe, WritePipe);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
//Start a thread to receive inbound connection from server for 2-way event signaling.
|
||||
boost::thread ClientListenerThread(ClientListenerThreadProc);
|
||||
#endif
|
||||
|
||||
try {
|
||||
transport->open();
|
||||
|
||||
//Notify server what to connect back on.
|
||||
if(bSocket)
|
||||
client->ClientSideListenPort(srvPort + 1); //Socket
|
||||
else if(!bAnonPipe)
|
||||
client->ClientSidePipeName(pipename_client); //Named Pipe
|
||||
|
||||
//Run some more RPCs
|
||||
std::string hellostr = "Hello how are you?";
|
||||
std::string returnstr;
|
||||
client->HelloThere(returnstr, hellostr);
|
||||
hlprintf("\n>>>Sent: %s\n", hellostr.c_str());
|
||||
hlprintf("<<<Received: %s\n", returnstr.c_str());
|
||||
|
||||
hlprintf("\n>>>Calling ServerDoSomething() which delays for 5 seconds.\n");
|
||||
client->ServerDoSomething();
|
||||
hlprintf(">>>ServerDoSomething() done.\n\n");
|
||||
|
||||
transport->close();
|
||||
} catch (TException &tx) {
|
||||
hlprintf("ERROR: %s\n", tx.what());
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//Thread Routine
|
||||
void ClientListenerThreadProc()
|
||||
{
|
||||
if(bSocket)
|
||||
thriftcommon::RunThriftServer<SampleCallbackHandler, SampleCallbackProcessor>(1, srvPort + 1);
|
||||
else if(!bAnonPipe)
|
||||
thriftcommon::RunThriftServer<SampleCallbackHandler, SampleCallbackProcessor>(1, pipename_client);
|
||||
}
|
||||
105
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/client.vcxproj
generated
vendored
Normal file
105
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/client.vcxproj
generated
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
?<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{85FBFB54-530B-498F-9F38-44BA204FAE6A}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>client</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../;../../../lib/cpp/src;../../../../boost;../../../../boost/boost/tr1;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>../../../lib/cpp/$(Configuration);../../../../Boost/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>libthrift.lib;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../;../../../lib/cpp/src;../../../../boost;../../../../boost/boost/tr1;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../../lib/cpp/$(Configuration);../../../../Boost/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>libthrift.lib;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ReadMe.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\gen-cpp\SampleCallback.h" />
|
||||
<ClInclude Include="..\gen-cpp\SampleService.h" />
|
||||
<ClInclude Include="..\gen-cpp\Sample_constants.h" />
|
||||
<ClInclude Include="..\gen-cpp\Sample_types.h" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="targetver.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\ThriftCommon.cpp" />
|
||||
<ClCompile Include="..\gen-cpp\SampleCallback.cpp" />
|
||||
<ClCompile Include="..\gen-cpp\SampleService.cpp" />
|
||||
<ClCompile Include="..\gen-cpp\Sample_constants.cpp" />
|
||||
<ClCompile Include="..\gen-cpp\Sample_types.cpp" />
|
||||
<ClCompile Include="client.cpp" />
|
||||
<ClCompile Include="stdafx.cpp" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
66
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/client.vcxproj.filters
generated
vendored
Normal file
66
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/client.vcxproj.filters
generated
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
?<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\gen-cpp">
|
||||
<UniqueIdentifier>{1265b3dc-91de-416f-aba6-7b750de4221e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ReadMe.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="targetver.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\gen-cpp\Sample_types.h">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\gen-cpp\SampleService.h">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\gen-cpp\Sample_constants.h">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\gen-cpp\SampleCallback.h">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="client.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\gen-cpp\SampleService.cpp">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\gen-cpp\Sample_constants.cpp">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\gen-cpp\Sample_types.cpp">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\gen-cpp\SampleCallback.cpp">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\ThriftCommon.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
8
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/stdafx.cpp
generated
vendored
Normal file
8
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/stdafx.cpp
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// client.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
||||
15
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/stdafx.h
generated
vendored
Normal file
15
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/stdafx.h
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "targetver.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
|
||||
|
||||
|
||||
// TODO: reference additional headers your program requires here
|
||||
8
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/targetver.h
generated
vendored
Normal file
8
vendor/git.apache.org/thrift.git/contrib/transport-sample/client/targetver.h
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
// Including SDKDDKVer.h defines the highest available Windows platform.
|
||||
|
||||
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
|
||||
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
|
||||
|
||||
#include <SDKDDKVer.h>
|
||||
24
vendor/git.apache.org/thrift.git/contrib/transport-sample/config.h
generated
vendored
Normal file
24
vendor/git.apache.org/thrift.git/contrib/transport-sample/config.h
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
//Missing definitions for *NIX systems. This sample project
|
||||
//was initially created on Windows.
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define TEXT(str) str
|
||||
|
||||
inline int Sleep(int ms)
|
||||
{
|
||||
return sleep(ms/1000); //sleep() param is in seconds
|
||||
}
|
||||
|
||||
inline int _tcscmp(const char* str1, const char* str2)
|
||||
{
|
||||
return strcmp(str1, str2);
|
||||
}
|
||||
|
||||
inline int _tstoi(const char* str)
|
||||
{
|
||||
return atoi(str);
|
||||
}
|
||||
|
||||
40
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/ReadMe.txt
generated
vendored
Normal file
40
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/ReadMe.txt
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
========================================================================
|
||||
CONSOLE APPLICATION : server Project Overview
|
||||
========================================================================
|
||||
|
||||
AppWizard has created this server application for you.
|
||||
|
||||
This file contains a summary of what you will find in each of the files that
|
||||
make up your server application.
|
||||
|
||||
|
||||
server.vcxproj
|
||||
This is the main project file for VC++ projects generated using an Application Wizard.
|
||||
It contains information about the version of Visual C++ that generated the file, and
|
||||
information about the platforms, configurations, and project features selected with the
|
||||
Application Wizard.
|
||||
|
||||
server.vcxproj.filters
|
||||
This is the filters file for VC++ projects generated using an Application Wizard.
|
||||
It contains information about the association between the files in your project
|
||||
and the filters. This association is used in the IDE to show grouping of files with
|
||||
similar extensions under a specific node (for e.g. ".cpp" files are associated with the
|
||||
"Source Files" filter).
|
||||
|
||||
server.cpp
|
||||
This is the main application source file.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other standard files:
|
||||
|
||||
StdAfx.h, StdAfx.cpp
|
||||
These files are used to build a precompiled header (PCH) file
|
||||
named server.pch and a precompiled types file named StdAfx.obj.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other notes:
|
||||
|
||||
AppWizard uses "TODO:" comments to indicate parts of the source code you
|
||||
should add to or customize.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
168
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/server.cpp
generated
vendored
Normal file
168
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/server.cpp
generated
vendored
Normal file
@@ -0,0 +1,168 @@
|
||||
// server.cpp : Defines the entry point for the console application.
|
||||
//
|
||||
// sample server command line app using Thrift IPC.
|
||||
//
|
||||
// This is a simple demonstration of full duplex RPC. That is, each
|
||||
// side runs both a client and server to enable bidirectional event
|
||||
// signaling.
|
||||
//
|
||||
|
||||
#ifdef _WIN32
|
||||
# include "stdafx.h"
|
||||
#else
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//Include this before the generated includes
|
||||
#include "ThriftCommon.h"
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//Tailor these to your generated files
|
||||
#include "../gen-cpp/SampleService.h"
|
||||
#include "../gen-cpp/SampleCallback.h"
|
||||
|
||||
using namespace Sample; //declared in .thrift file
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
int16_t ClientPort_;
|
||||
std::string ClientPipeName_;
|
||||
void S2CThreadProc();
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// RPC implementations
|
||||
//
|
||||
class SampleServiceHandler : virtual public SampleServiceIf {
|
||||
public:
|
||||
SampleServiceHandler() {
|
||||
// Your initialization goes here
|
||||
}
|
||||
|
||||
void HelloThere(std::string& _return, const std::string& HelloString) {
|
||||
// Your implementation goes here
|
||||
printf("<<<HelloThere() received string: %s\n", HelloString.c_str());
|
||||
_return = "Good thank you.";
|
||||
}
|
||||
|
||||
void ServerDoSomething() {
|
||||
// Your implementation goes here
|
||||
printf("ServerDoSomething(): Simulating work for 5 seconds\n");
|
||||
Sleep(5000);
|
||||
printf("ServerDoSomething(): Done\n");
|
||||
}
|
||||
|
||||
void ClientSideListenPort(const int16_t ClientListenPort)
|
||||
{
|
||||
ClientPort_ = ClientListenPort;
|
||||
ClientPipeName_ = "";
|
||||
#ifdef _WIN32
|
||||
printf(">>>Connecting to client on port %d\n", ClientPort_);
|
||||
boost::thread Connect2ClientThread(S2CThreadProc);
|
||||
#endif
|
||||
}
|
||||
|
||||
void ClientSidePipeName(const std::string& ClientPipeName)
|
||||
{
|
||||
ClientPipeName_ = ClientPipeName;
|
||||
ClientPort_ = 0;
|
||||
#ifdef _WIN32
|
||||
printf(">>>Connecting to client pipe %s\n", ClientPipeName_.c_str());
|
||||
boost::thread Connect2ClientThread(S2CThreadProc);
|
||||
#endif
|
||||
}
|
||||
};
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifdef _WIN32
|
||||
int _tmain(int argc, _TCHAR* argv[])
|
||||
#else
|
||||
int main(int argc, char **argv)
|
||||
#endif
|
||||
{
|
||||
int port;
|
||||
std::string pipename; //e.g. "affpipe"
|
||||
|
||||
bool usage = false;
|
||||
|
||||
//Process command line params
|
||||
if(argc > 1)
|
||||
{
|
||||
if(_tcscmp(argv[1], TEXT("-sp")) == 0)
|
||||
{ //Socket Port specified
|
||||
port = _tstoi(argv[2]);
|
||||
#ifdef _WIN32
|
||||
TWinsockSingleton::create();
|
||||
#endif
|
||||
// Start the thrift server which is a blocking call.
|
||||
thriftcommon::RunThriftServer<SampleServiceHandler, SampleServiceProcessor>(10, port);
|
||||
}
|
||||
else if(_tcscmp(argv[1], TEXT("-np")) == 0)
|
||||
{ //Named Pipe specified
|
||||
#ifdef _WIN32
|
||||
std::wstring wpipe(argv[2]);
|
||||
pipename.resize(wpipe.length());
|
||||
std::copy(wpipe.begin(), wpipe.end(), pipename.begin());
|
||||
#else
|
||||
pipename = argv[2];
|
||||
#endif
|
||||
printf("Using Named Pipe %s\n", pipename.c_str());
|
||||
|
||||
//Thrift over Named Pipe.
|
||||
thriftcommon::RunThriftServer<SampleServiceHandler, SampleServiceProcessor>(10, pipename);
|
||||
}
|
||||
else if(_tcscmp(argv[1], TEXT("-ap")) == 0)
|
||||
{ //Anonymous Pipe specified
|
||||
//This is more involved because the child needs to be launched
|
||||
//after the transport is created but before the blocking server
|
||||
//call.
|
||||
#ifdef _WIN32
|
||||
boost::shared_ptr<TServerTransport> transport(new TPipeServer()); //Anonymous pipe
|
||||
thriftcommon::LaunchAnonPipeChild(".\\client.exe", transport);
|
||||
boost::shared_ptr<SampleServiceHandler> handler(new SampleServiceHandler());
|
||||
thriftcommon::RunThriftServer<SampleServiceHandler, SampleServiceProcessor>(handler, 10, transport);
|
||||
#else
|
||||
printf("Anonymous pipes not (yet) supported under *NIX\n");
|
||||
#endif
|
||||
}
|
||||
else
|
||||
usage = true;
|
||||
}
|
||||
else
|
||||
usage = true;
|
||||
|
||||
if(usage)
|
||||
{
|
||||
printf("Thrift sample server usage:\n\n");
|
||||
printf("Socket Port : -sp <port#>\n");
|
||||
printf("Named Pipe : -np <pipename> (e.g. affpipe)\n");
|
||||
printf("Anonymous Pipe: -ap\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//Thread Routine that connects to the 'client'.
|
||||
void S2CThreadProc()
|
||||
{
|
||||
//Master server's connection to client-side's server.
|
||||
boost::shared_ptr<SampleCallbackClient> clientsrv; //Client class from Thrift-generated code.
|
||||
boost::shared_ptr<TTransport> transport;
|
||||
if(ClientPort_ != 0)
|
||||
thriftcommon::ConnectToServer<SampleCallbackClient, TTransport>(clientsrv, transport, ClientPort_);
|
||||
if(!ClientPipeName_.empty())
|
||||
thriftcommon::ConnectToServer<SampleCallbackClient, TTransport>(clientsrv, transport, ClientPipeName_);
|
||||
|
||||
try {
|
||||
transport->open();
|
||||
|
||||
clientsrv->pingclient();
|
||||
Sleep(1500);
|
||||
clientsrv->pingclient();
|
||||
Sleep(1500);
|
||||
clientsrv->pingclient();
|
||||
|
||||
transport->close();
|
||||
} catch (TException &tx) {
|
||||
printf("ERROR: %s\n", tx.what());
|
||||
}
|
||||
}
|
||||
|
||||
106
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/server.vcxproj
generated
vendored
Normal file
106
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/server.vcxproj
generated
vendored
Normal file
@@ -0,0 +1,106 @@
|
||||
?<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{72FCAF29-506D-4164-9FA6-F54C5C28E79D}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>server</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../;../../../lib/cpp/src;../../../../Boost/;../../../../Boost/boost/tr1;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>../../../lib/cpp/$(Configuration);../../../../Boost/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>libthrift.lib;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../;../../../lib/cpp/src;../../../../Boost/;../../../../Boost/boost/tr1;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../../lib/cpp/$(Configuration);../../../../Boost/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>libthrift.lib;ws2_32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ReadMe.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\gen-cpp\SampleCallback.h" />
|
||||
<ClInclude Include="..\gen-cpp\SampleService.h" />
|
||||
<ClInclude Include="..\gen-cpp\Sample_constants.h" />
|
||||
<ClInclude Include="..\gen-cpp\Sample_types.h" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="targetver.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\ThriftCommon.cpp" />
|
||||
<ClCompile Include="..\gen-cpp\SampleCallback.cpp" />
|
||||
<ClCompile Include="..\gen-cpp\SampleService.cpp" />
|
||||
<ClCompile Include="..\gen-cpp\Sample_constants.cpp" />
|
||||
<ClCompile Include="..\gen-cpp\Sample_types.cpp" />
|
||||
<ClCompile Include="server.cpp" />
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
66
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/server.vcxproj.filters
generated
vendored
Normal file
66
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/server.vcxproj.filters
generated
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
?<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\gen-cpp">
|
||||
<UniqueIdentifier>{dab66db8-bc45-4518-aad2-7a75696226e3}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ReadMe.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="targetver.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\gen-cpp\Sample_types.h">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\gen-cpp\SampleService.h">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\gen-cpp\Sample_constants.h">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\gen-cpp\SampleCallback.h">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="server.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\gen-cpp\Sample_types.cpp">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\gen-cpp\SampleService.cpp">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\gen-cpp\Sample_constants.cpp">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\gen-cpp\SampleCallback.cpp">
|
||||
<Filter>Source Files\gen-cpp</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\ThriftCommon.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
8
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/stdafx.cpp
generated
vendored
Normal file
8
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/stdafx.cpp
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// server.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
||||
15
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/stdafx.h
generated
vendored
Normal file
15
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/stdafx.h
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "targetver.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
|
||||
|
||||
|
||||
// TODO: reference additional headers your program requires here
|
||||
8
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/targetver.h
generated
vendored
Normal file
8
vendor/git.apache.org/thrift.git/contrib/transport-sample/server/targetver.h
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
// Including SDKDDKVer.h defines the highest available Windows platform.
|
||||
|
||||
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
|
||||
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
|
||||
|
||||
#include <SDKDDKVer.h>
|
||||
1
vendor/git.apache.org/thrift.git/contrib/transport-sample/thriftme.bat
generated
vendored
Normal file
1
vendor/git.apache.org/thrift.git/contrib/transport-sample/thriftme.bat
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
thrift.exe --gen cpp Sample.thrift
|
||||
24
vendor/git.apache.org/thrift.git/contrib/transport-sample/thriftme.sh
generated
vendored
Normal file
24
vendor/git.apache.org/thrift.git/contrib/transport-sample/thriftme.sh
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
THRIFT_COMPILER=./thrift
|
||||
OUTPUT_FOLDER=$PWD
|
||||
|
||||
if [ ! -e "${THRIFT_COMPILER}" ]
|
||||
then
|
||||
THRIFT_COMPILER=thrift
|
||||
command -v ${THRIFT_COMPILER} >/dev/null 2>&1
|
||||
if [ $? -eq 1 ]; then
|
||||
echo
|
||||
echo "thrift compiler not found."
|
||||
echo
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
${THRIFT_COMPILER} --gen cpp Sample.thrift
|
||||
|
||||
echo
|
||||
echo "Files have been generated in gen-cpp."
|
||||
|
||||
exit
|
||||
|
||||
26
vendor/git.apache.org/thrift.git/contrib/transport-sample/transport-sample.sln
generated
vendored
Normal file
26
vendor/git.apache.org/thrift.git/contrib/transport-sample/transport-sample.sln
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
?
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server", "server\server.vcxproj", "{72FCAF29-506D-4164-9FA6-F54C5C28E79D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client", "client\client.vcxproj", "{85FBFB54-530B-498F-9F38-44BA204FAE6A}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{72FCAF29-506D-4164-9FA6-F54C5C28E79D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{72FCAF29-506D-4164-9FA6-F54C5C28E79D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{72FCAF29-506D-4164-9FA6-F54C5C28E79D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{72FCAF29-506D-4164-9FA6-F54C5C28E79D}.Release|Win32.Build.0 = Release|Win32
|
||||
{85FBFB54-530B-498F-9F38-44BA204FAE6A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{85FBFB54-530B-498F-9F38-44BA204FAE6A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{85FBFB54-530B-498F-9F38-44BA204FAE6A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{85FBFB54-530B-498F-9F38-44BA204FAE6A}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Reference in New Issue
Block a user