コード例 #1
0
ファイル: HTS.cpp プロジェクト: ParkerLab/ataqc
sam_header parse_sam_header(const std::string &header_text) {
    sam_header header;

    std::stringstream headers_stream(header_text);

    std::string header_tag;

    for (std::string header_string; std::getline(headers_stream, header_string); ) {
        std::stringstream header_stream(header_string);

        header_stream >> header_tag;
        header_tag = header_tag.substr(1);

        std::map<std::string, std::string> field_map;
        for (std::string field; std::getline(header_stream, field, '\t');) {
            std::stringstream field_stream(field);
            for (std::string field_text; std::getline(field_stream, field_text, '\t');) {
                std::vector<std::string> splitfield = split(field_text, ":");
                field_map[splitfield[0]] = splitfield[1];
            }
        }
        header[header_tag].push_back(field_map);
    }

    return header;
}
コード例 #2
0
static void import_m1_physics_data()
{
	OpenedFile PhysicsFile;
	if (!PhysicsFileSpec.Open(PhysicsFile)) 
	{
		return;
	}

	int32 position  = 0;
	int32 length;
	PhysicsFile.GetLength(length);

	while (position < length)
	{
		std::vector<uint8> header(12);
		PhysicsFile.Read(header.size(), &header[0]);
		AIStreamBE header_stream(&header[0], header.size());

		uint32 tag;
		uint16 count;
		uint16 size;

		header_stream >> tag;
		header_stream.ignore(4); // unused
		header_stream >> count;
		header_stream >> size;

		std::vector<uint8> data(count * size);
		PhysicsFile.Read(data.size(), &data[0]);
		switch (tag) 
		{
		case M1_MONSTER_PHYSICS_TAG:
			unpack_m1_monster_definition(&data[0], count);
			break;
		case M1_EFFECTS_PHYSICS_TAG:
			unpack_m1_effect_definition(&data[0], count);
			break;
		case M1_PROJECTILE_PHYSICS_TAG:
			unpack_m1_projectile_definition(&data[0], count);
			break;
		case M1_PHYSICS_PHYSICS_TAG:
			unpack_m1_physics_constants(&data[0], count);
			break;
		case M1_WEAPONS_PHYSICS_TAG:
			unpack_m1_weapon_definition(&data[0], count);
			break;
		}

		PhysicsFile.GetPosition(position);
	}
}
コード例 #3
0
 void httpclient::httpcontext::post(const std::string & host, const std::string & port, const std::string & path, const std::map<std::string, std::string> & headers, bool secure)
 {
     if (!connect(
     #ifndef HPROSE_NO_OPENSSL
         secure ?
             ssl_socket.next_layer() :
     #endif
             socket, host, port, secure)) return;
     boost::system::error_code error = boost::asio::error::host_not_found;
     boost::asio::streambuf header;
     std::iostream header_stream(&header);
     header_stream << "POST " << ((path == "/*") ? std::string("*") : path) << " HTTP/1.1\r\n";;
     for (std::map<std::string, std::string>::const_iterator iter = headers.begin(); iter != headers.end(); iter++)
     {
         header_stream << iter->first << ": " << iter->second << "\r\n";
     }
     std::string cookie = cookies::get_cookie(alive_host, path, secure);
     if (!cookie.empty())
     {
         header_stream << "Cookie: " << cookie << "\r\n";
     }
     header_stream << "Content-Length: " << request.size() << "\r\n\r\n";
     if (request.size() >= 64 * 1024)
     {
         write(header, secure);
         write(request, secure);
     }
     else
     {
         header_stream << &request;
         write(header, secure);
     }
     if (response.size())
     {
         response.consume(response.size());
     }
     std::string s;
     size_t bytes = 0, len = 0;
     bool toclose = false, chunked = false;
     while ((bytes = read_line(header, secure)) > 2)
     {
         header_stream >> s;
         if (_strcmpi(s.c_str(), "Content-Length:") == 0)
         {
             header_stream >> len;
         }
         else if (_strcmpi(s.c_str(), "Connection:") == 0)
コード例 #4
0
static void import_m1_physics_data_from_network(uint8 *data, uint32 length)
{
	int32 position = 0;
	while (position < length)
	{
		AIStreamBE header_stream(&data[position], 12);
		position += 12;

		uint32 tag;
		uint16 count;
		uint16 size;

		header_stream >> tag;
		header_stream.ignore(4); // unused
		header_stream >> count;
		header_stream >> size;

		switch (tag)
		{
			case M1_MONSTER_PHYSICS_TAG:
				unpack_m1_monster_definition(&data[position], count);
				break;
			case M1_EFFECTS_PHYSICS_TAG:
				unpack_m1_effect_definition(&data[position], count);
				break;
			case M1_PROJECTILE_PHYSICS_TAG:
				unpack_m1_projectile_definition(&data[position], count);
				break;
			case M1_PHYSICS_PHYSICS_TAG:
				unpack_m1_physics_constants(&data[position], count);
				break;
			case M1_WEAPONS_PHYSICS_TAG:
				unpack_m1_weapon_definition(&data[position], count);
				break;
		}
		position += count * size;
	}
}