inline std::vector< std::wstring > get_command_line_args() { using args_ptr = std::unique_ptr< LPWSTR, local_free_deleter >; int sz = 0; auto args = args_ptr( CommandLineToArgvW( GetCommandLineW(), &sz ) ); std::vector< std::wstring > result; for( int i = 0; i < sz; ++i ) { result.emplace_back( args.get()[i] ); } return result; }
/** * Send load llvm command. * Packet format: { * name: <Application name>, * file: <File content(binary)>, * args: [<arg1>, <arg2>,...], * pid: <pid>, * dst_nid: <Destination node-id> * } * @param name Application name. * @param file File content(binary). * @param args List of arguments for program. * @param dst_nid Destination node-id. */ void ServerConnector::send_load_llvm(const std::string& name, const std::string& file, const std::vector<std::string>& args, const vpid_t& pid, const nid_t& dst_nid) { sio::message::ptr data(sio::object_message::create()); sio::message::ptr args_ptr(sio::array_message::create()); std::map<std::string, sio::message::ptr>& map = data->get_map(); std::vector<sio::message::ptr>& args_vtr = args_ptr->get_vector(); map.insert(std::make_pair("name", sio::string_message::create(name))); map.insert(std::make_pair("file", sio::binary_message::create (std::shared_ptr<const std::string>(new std::string(file))))); for (auto& arg : args) { args_vtr.push_back(sio::string_message::create(arg)); } map.insert(std::make_pair("args", args_ptr)); map.insert(std::make_pair("pid", get_sio_by_pid(pid))); map.insert(std::make_pair("dst_nid", get_sio_by_nid(dst_nid))); socket->emit("load_llvm", data); }