Example #1
0
// -----------------------------------------------------------------------------
// CMoveObject::MoveObjectL
// Move object operation
// -----------------------------------------------------------------------------
//
void CMoveObject::MoveObjectL()
    {
    PRINT( _L( "MM MTP => CMoveObject::MoveObjectL" ) );
    TMTPResponseCode responseCode = EMTPRespCodeOK;

    GetParametersL();

    RBuf newObjectName;
    newObjectName.CreateL( KMaxFileName );
    newObjectName.CleanupClosePushL(); // + newObjectName
    newObjectName = *iDest;

    TPtrC suid( iObjectInfo->DesC( CMTPObjectMetaData::ESuid ) );
    TParsePtrC fileNameParser( suid );
    if ( ( newObjectName.Length() + fileNameParser.NameAndExt().Length() )
        <= newObjectName.MaxLength() )
        {
        newObjectName.Append( fileNameParser.NameAndExt() );
        responseCode = CanMoveObjectL( suid, newObjectName );

        if ( responseCode == EMTPRespCodeOK )
            MoveFileL( newObjectName );
        }
    else
        // Destination is not appropriate for the full path name shouldn't be longer than 255
        responseCode = EMTPRespCodeInvalidDataset;

    SendResponseL( responseCode );

    CleanupStack::PopAndDestroy( &newObjectName ); // - newObjectName

    PRINT1( _L( "MM MTP <= CMoveObject::MoveObjectL responseCode = 0x%x" ), responseCode );
    }
Example #2
0
void Config_Cache::check_cache_solution(void) {
	{
		// 跨服不需要检查(调试版也不能检查了)
		const Json::Value &server_solution = CONFIG_INSTANCE->open_solution();
		int inter_solution_id = server_solution["inter_solution_id"].asInt();
		if (inter_solution_id) {
			// 场景不在开服方案
			const Server_Solution_Cache &server_solution_cache = CONFIG_CACHE->server_solution_cache();
			Monitor_Mark_Vec muid;
			Scene_Unique_ID scene_uid;
			Hash_Map<Scene_Unique_ID, Monitor_Unique_ID, NULL_MUTEX> scene_muid_map_;
			server_solution_cache.fetch_muid_by_type(muid, Server_Enum::MONITOR_SCENE);
			for (Monitor_Mark_Vec::iterator it = muid.begin(); it != muid.end(); ++it) {
				scene_uid.scene_id = (*it).id;
				scene_uid.scene_order = (*it).order;
				if (scene_muid_map_.bind(scene_uid, (*it))) {
					LOG_ABORT("scene repeat, scene_id:%d, scene_order:%d", (*it).id, (*it).order);
				}
			}

			const Json::Value json_scene = CONFIG_INSTANCE->config_json()["scene"]["scene_config"];
			for (Json::Value::const_iterator it = json_scene.begin(); it != json_scene.end(); it++) {
				int scene_id = (*it)["sceneId"].asInt();
				Monitor_Unique_ID muid;
				Scene_Unique_ID suid(scene_id, 0);
				if (scene_muid_map_.find(suid, muid)) {
					LOG_ABORT("场景:%d不在开服方案", scene_id);
				}
			}

			Hash_Map<Scene_Unique_ID, Monitor_Unique_ID, NULL_MUTEX>::iterator begin = scene_muid_map_.begin();
			Hash_Map<Scene_Unique_ID, Monitor_Unique_ID, NULL_MUTEX>::iterator end = scene_muid_map_.end();
			for (Hash_Map<Scene_Unique_ID, Monitor_Unique_ID, NULL_MUTEX>::iterator it = begin; it != end; ++it) {
				const Scene_Config *scene_config = CONFIG_CACHE_SCENE->scene_config_cache(it->first.scene_id);
				if (!scene_config) {
					LOG_ABORT("方案场景:%d找不到配制", it->first.scene_id);
				}

				int map_id = scene_config->map_id ? scene_config->map_id : scene_config->scene_id;
				if (!CONFIG_CACHE_SCENE->scene_map_data_cache(map_id)) {
					LOG_ABORT("场景:%d地图%d不存在", scene_config->scene_id, map_id);
				}
			}
		}
	}

}