| // 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; | 
 | 	} | 
 | } |