[yellowstone] Add yellowstone server for endpoint registration.

This commit is contained in:
Drew Galbraith 2023-06-22 02:19:16 -07:00
parent 8dcb1ddabd
commit a46694d0f7
13 changed files with 248 additions and 31 deletions

View file

@ -15,6 +15,7 @@ target_link_libraries(denali
cxx
glacier
mammoth_lib
yellowstonestub
)
set_target_properties(denali PROPERTIES

View file

@ -2,7 +2,9 @@
#include <mammoth/debug.h>
#include <mammoth/endpoint_server.h>
#include <mammoth/init.h>
#include <mammoth/port.h>
#include <stdint.h>
#include <yellowstone.h>
#include "ahci/ahci_driver.h"
#include "denali_server.h"
@ -12,7 +14,24 @@ uint64_t main(uint64_t init_port_cap) {
AhciDriver driver;
RET_ERR(driver.Init());
EndpointServer endpoint = EndpointServer::Adopt(gInitEndpointCap);
EndpointClient yellowstone = EndpointClient::AdoptEndpoint(gInitEndpointCap);
YellowstoneGetReq req{
.type = kYellowstoneGetRegistration,
};
auto resp_cap_or =
yellowstone
.CallEndpoint<YellowstoneGetReq, YellowstoneGetRegistrationResp>(req);
if (!resp_cap_or.ok()) {
dbgln("Bad call");
check(resp_cap_or.error());
}
auto resp_cap = resp_cap_or.value();
Port notify(resp_cap.second());
ASSIGN_OR_RETURN(EndpointServer endpoint, EndpointServer::Create());
ASSIGN_OR_RETURN(EndpointClient client, endpoint.CreateClient());
notify.WriteMessage("denali", client.GetCap());
DenaliServer server(endpoint, driver);
RET_ERR(server.RunServer());
// FIXME: Add thread join.