Moved the HLE command buffer translation task to ServerSession instead of the HLE handler superclass.

This commit is contained in:
Subv
2016-12-09 12:52:12 -05:00
parent deb83c9fc5
commit ebbb55ec8f
6 changed files with 38 additions and 47 deletions

View File

@ -41,8 +41,14 @@ ResultCode ServerSession::HandleSyncRequest() {
// from its ClientSession, so wake up any threads that may be waiting on a svcReplyAndReceive or similar.
// If this ServerSession has an associated HLE handler, forward the request to it.
if (hle_handler != nullptr)
return hle_handler->HandleSyncRequest(SharedPtr<ServerSession>(this));
if (hle_handler != nullptr) {
// Attempt to translate the incoming request's command buffer.
ResultCode result = TranslateHLERequest(this);
if (result.IsError())
return result;
hle_handler->HandleSyncRequest(SharedPtr<ServerSession>(this));
// TODO(Subv): Translate the response command buffer.
}
// If this ServerSession does not have an HLE implementation, just wake up the threads waiting on it.
signaled = true;
@ -60,4 +66,9 @@ ServerSession::SessionPair ServerSession::CreateSessionPair(const std::string& n
return std::make_tuple(std::move(server_session), std::move(client_session));
}
ResultCode TranslateHLERequest(ServerSession* server_session) {
// TODO(Subv): Implement this function once multiple concurrent processes are supported.
return RESULT_SUCCESS;
}
}