mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 05:52:46 +00:00 
			
		
		
		
	AudioServer: Begin work on a new IPC API style.
The goal here is to generate most of this code from IPC protocol
descriptions, but for now I've spelled them all out to get started.
Each message gets a wrapper class in the ASAPI_Client or ASAPI_Server
namespace. They are convertible to and from the old message structs.
The real hotness happens when you want to make a synchronous request
to the other side:
    auto response = send_sync<ASAPI_Client::GetMainMixVolume>();
Each request class knows his corresponding response class, so in the
above example, "response" will be an ASAPI_Server::DidGetMainMixVolume
object, and we can get the volume like so:
    int volume = response.volume();
For posting messages that don't expect a response, you can still use
post_message() since the message classes are convertible:
    post_message(ASAPI_Server::DidGetMainMixVolume(volume));
It's not perfect yet, but I already really like it. :^)
			
			
This commit is contained in:
		
							parent
							
								
									a175e76948
								
							
						
					
					
						commit
						e6db1b81b8
					
				
					 4 changed files with 227 additions and 40 deletions
				
			
		|  | @ -167,6 +167,18 @@ namespace Client { | |||
|             return response; | ||||
|         } | ||||
| 
 | ||||
|         template<typename RequestType, typename... Args> | ||||
|         typename RequestType::ResponseType send_sync(Args&&... args) | ||||
|         { | ||||
|             bool success = post_message_to_server(RequestType(forward<Args>(args)...)); | ||||
|             ASSERT(success); | ||||
| 
 | ||||
|             ServerMessage response; | ||||
|             success = wait_for_specific_event(RequestType::ResponseType::message_type(), response); | ||||
|             ASSERT(success); | ||||
|             return response; | ||||
|         } | ||||
| 
 | ||||
|     protected: | ||||
|         struct IncomingMessageBundle { | ||||
|             ServerMessage message; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling