port to contact4
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				ContinuousDelivery / linux-ubuntu (push) Has been cancelled
				
			
		
			
				
	
				ContinuousDelivery / windows (push) Has been cancelled
				
			
		
			
				
	
				ContinuousIntegration / linux (push) Has been cancelled
				
			
		
			
				
	
				ContinuousIntegration / macos (push) Has been cancelled
				
			
		
			
				
	
				ContinuousIntegration / windows (push) Has been cancelled
				
			
		
			
				
	
				ContinuousDelivery / release (push) Has been cancelled
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	ContinuousDelivery / linux-ubuntu (push) Has been cancelled
				
			ContinuousDelivery / windows (push) Has been cancelled
				
			ContinuousIntegration / linux (push) Has been cancelled
				
			ContinuousIntegration / macos (push) Has been cancelled
				
			ContinuousIntegration / windows (push) Has been cancelled
				
			ContinuousDelivery / release (push) Has been cancelled
				
			This commit is contained in:
		| @@ -34,13 +34,13 @@ SOLANA_PLUGIN_EXPORT uint32_t solana_plugin_start(struct SolanaAPI* solana_api) | ||||
|  | ||||
| 	try { | ||||
| 		auto* conf = PLUG_RESOLVE_INSTANCE(ConfigModelI); | ||||
| 		auto* cr = PLUG_RESOLVE_INSTANCE_VERSIONED(Contact3Registry, "1"); | ||||
| 		auto* cs = PLUG_RESOLVE_INSTANCE(ContactStore4I); | ||||
| 		auto* rmm = PLUG_RESOLVE_INSTANCE(RegistryMessageModelI); | ||||
|  | ||||
| 		// static store, could be anywhere tho | ||||
| 		// construct with fetched dependencies | ||||
| 		g_flp = std::make_unique<FactorioLogParser>(*conf); | ||||
| 		g_f = std::make_unique<Factorio>(*conf, *cr, *rmm, *g_flp); | ||||
| 		g_f = std::make_unique<Factorio>(*conf, *cs, *rmm, *g_flp); | ||||
|  | ||||
| 		// register types | ||||
| 		PLUG_PROVIDE_INSTANCE(FactorioLogParser, plugin_name, g_flp.get()); | ||||
|   | ||||
| @@ -3,6 +3,8 @@ | ||||
| #include <solanaceae/util/config_model.hpp> | ||||
| #include <solanaceae/util/utils.hpp> | ||||
|  | ||||
| #include <solanaceae/contact/contact_store_i.hpp> | ||||
|  | ||||
| #include <solanaceae/message3/components.hpp> | ||||
| #include <solanaceae/contact/components.hpp> | ||||
|  | ||||
| @@ -16,9 +18,9 @@ void Factorio::sendToLinked(const std::string& message) { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| Factorio::Factorio(ConfigModelI& conf, Contact3Registry& cr, RegistryMessageModelI& rmm, FactorioLogParser& flp) : | ||||
| Factorio::Factorio(ConfigModelI& conf, ContactStore4I& cs, RegistryMessageModelI& rmm, FactorioLogParser& flp) : | ||||
| 	_conf(conf), | ||||
| 	_cr(cr), | ||||
| 	_cs(cs), | ||||
| 	_rmm(rmm), | ||||
| 	_rmm_sr(_rmm.newSubRef(this)), | ||||
| 	_flp(flp), | ||||
| @@ -31,19 +33,12 @@ Factorio::Factorio(ConfigModelI& conf, Contact3Registry& cr, RegistryMessageMode | ||||
| 		const auto id_vec = hex2bin(contact_id); | ||||
|  | ||||
| 		// search | ||||
| 		Contact3Handle h; | ||||
| 		auto view = _cr.view<Contact::Components::ID>(); | ||||
| 		for (const auto c : view) { | ||||
| 			if (view.get<Contact::Components::ID>(c).data == id_vec) { | ||||
| 				h = Contact3Handle{_cr, c}; | ||||
| 				std::cout << "Factorio: found contact for link.\n"; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		ContactHandle4 h = _cs.getOneContactByID(ByteSpan{id_vec}); | ||||
| 		if (!static_cast<bool>(h)) { | ||||
| 			// not found, create thin contact with just id | ||||
| 			h = {_cr, _cr.create()}; | ||||
| 			h = _cs.contactHandle(_cs.registry().create()); | ||||
| 			h.emplace<Contact::Components::ID>(id_vec); | ||||
| 			_cs.throwEventConstruct(h); | ||||
| 			std::cout << "Factorio: contact not found, created thin contact from ID. (" << contact_id << ")\n"; | ||||
| 		} | ||||
| 		_linked_contacts.push_back(h); | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include <solanaceae/contact/fwd.hpp> | ||||
| #include <solanaceae/message3/registry_message_model.hpp> | ||||
|  | ||||
| #include "./factorio_log_parser.hpp" | ||||
| @@ -11,18 +12,18 @@ struct ConfigModelI; | ||||
|  | ||||
| class Factorio : public RegistryMessageModelEventI, public FactorioLogParserEventI { | ||||
| 	ConfigModelI& _conf; | ||||
| 	Contact3Registry& _cr; | ||||
| 	ContactStore4I& _cs; | ||||
| 	RegistryMessageModelI& _rmm; | ||||
| 	RegistryMessageModelI::SubscriptionReference _rmm_sr; | ||||
| 	FactorioLogParser& _flp; | ||||
| 	FactorioLogParser::SubscriptionReference _flp_sr; | ||||
|  | ||||
| 	std::vector<Contact3Handle> _linked_contacts; | ||||
| 	std::vector<ContactHandle4> _linked_contacts; | ||||
|  | ||||
| 	void sendToLinked(const std::string& message); | ||||
|  | ||||
| 	public: | ||||
| 		Factorio(ConfigModelI& conf, Contact3Registry& cr, RegistryMessageModelI& rmm, FactorioLogParser& flp); | ||||
| 		Factorio(ConfigModelI& conf, ContactStore4I& cs, RegistryMessageModelI& rmm, FactorioLogParser& flp); | ||||
| 		virtual ~Factorio(void); | ||||
|  | ||||
| 	protected: // rmm | ||||
|   | ||||
		Reference in New Issue
	
	Block a user