mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +00:00 
			
		
		
		
	BOSS service serialization
This commit is contained in:
		
							parent
							
								
									5265c79056
								
							
						
					
					
						commit
						1185d62792
					
				
					 7 changed files with 56 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -5,8 +5,10 @@
 | 
			
		|||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <memory>
 | 
			
		||||
#include <boost/serialization/shared_ptr.hpp>
 | 
			
		||||
#include "core/hle/kernel/event.h"
 | 
			
		||||
#include "core/hle/service/service.h"
 | 
			
		||||
#include "core/global.h"
 | 
			
		||||
 | 
			
		||||
namespace Core {
 | 
			
		||||
class System;
 | 
			
		||||
| 
						 | 
				
			
			@ -952,19 +954,45 @@ public:
 | 
			
		|||
         */
 | 
			
		||||
        void GetNsDataNewFlagPrivileged(Kernel::HLERequestContext& ctx);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
    protected:
 | 
			
		||||
        std::shared_ptr<Module> boss;
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        u8 new_arrival_flag;
 | 
			
		||||
        u8 ns_data_new_flag;
 | 
			
		||||
        u8 ns_data_new_flag_privileged;
 | 
			
		||||
        u8 output_flag;
 | 
			
		||||
 | 
			
		||||
        template <class Archive>
 | 
			
		||||
        void serialize(Archive& ar, const unsigned int)
 | 
			
		||||
        {
 | 
			
		||||
            ar & new_arrival_flag;
 | 
			
		||||
            ar & ns_data_new_flag;
 | 
			
		||||
            ar & ns_data_new_flag_privileged;
 | 
			
		||||
            ar & output_flag;
 | 
			
		||||
        }
 | 
			
		||||
        friend class boost::serialization::access;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    std::shared_ptr<Kernel::Event> task_finish_event;
 | 
			
		||||
 | 
			
		||||
    template <class Archive>
 | 
			
		||||
    void serialize(Archive& ar, const unsigned int)
 | 
			
		||||
    {
 | 
			
		||||
        ar & task_finish_event;
 | 
			
		||||
    }
 | 
			
		||||
    friend class boost::serialization::access;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void InstallInterfaces(Core::System& system);
 | 
			
		||||
 | 
			
		||||
} // namespace Service::BOSS
 | 
			
		||||
 | 
			
		||||
namespace boost::serialization {
 | 
			
		||||
    template <class Archive>
 | 
			
		||||
    inline void load_construct_data(Archive& ar, Service::BOSS::Module* t, const unsigned int)
 | 
			
		||||
    {
 | 
			
		||||
        ::new(t)Service::BOSS::Module(Core::Global<Core::System>());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
// Refer to the license.txt file included.
 | 
			
		||||
 | 
			
		||||
#include "core/hle/service/boss/boss_p.h"
 | 
			
		||||
#include "common/archives.h"
 | 
			
		||||
 | 
			
		||||
namespace Service::BOSS {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -84,3 +85,5 @@ BOSS_P::BOSS_P(std::shared_ptr<Module> boss)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
} // namespace Service::BOSS
 | 
			
		||||
 | 
			
		||||
SERIALIZE_EXPORT_IMPL(Service::BOSS::BOSS_P)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,12 @@ namespace Service::BOSS {
 | 
			
		|||
class BOSS_P final : public Module::Interface {
 | 
			
		||||
public:
 | 
			
		||||
    explicit BOSS_P(std::shared_ptr<Module> boss);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    SERVICE_SERIALIZATION(BOSS_P, boss, Module)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Service::BOSS
 | 
			
		||||
 | 
			
		||||
BOOST_CLASS_EXPORT_KEY(Service::BOSS::BOSS_P)
 | 
			
		||||
BOOST_SERIALIZATION_CONSTRUCT(Service::BOSS::BOSS_P)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
// Refer to the license.txt file included.
 | 
			
		||||
 | 
			
		||||
#include "core/hle/service/boss/boss_u.h"
 | 
			
		||||
#include "common/archives.h"
 | 
			
		||||
 | 
			
		||||
namespace Service::BOSS {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -72,3 +73,5 @@ BOSS_U::BOSS_U(std::shared_ptr<Module> boss)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
} // namespace Service::BOSS
 | 
			
		||||
 | 
			
		||||
SERIALIZE_EXPORT_IMPL(Service::BOSS::BOSS_U)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,12 @@ namespace Service::BOSS {
 | 
			
		|||
class BOSS_U final : public Module::Interface {
 | 
			
		||||
public:
 | 
			
		||||
    explicit BOSS_U(std::shared_ptr<Module> boss);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    SERVICE_SERIALIZATION(BOSS_U, boss, Module)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Service::BOSS
 | 
			
		||||
 | 
			
		||||
BOOST_CLASS_EXPORT_KEY(Service::BOSS::BOSS_U)
 | 
			
		||||
BOOST_SERIALIZATION_CONSTRUCT(Service::BOSS::BOSS_U)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue