From af8eec40804a3851d6820bacca1e456a14a48172 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 7 Oct 2002 22:03:11 +0000 Subject: [PATCH] Added support for the B_REG_SET_SIGNATURE request (BRoster::SetSignature()). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1438 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/registrar/Registrar.cpp | 3 +++ src/servers/registrar/TRoster.cpp | 37 +++++++++++++++++++++++++++++ src/servers/registrar/TRoster.h | 1 + 3 files changed, 41 insertions(+) diff --git a/src/servers/registrar/Registrar.cpp b/src/servers/registrar/Registrar.cpp index 8e62d46e73..946722cba8 100644 --- a/src/servers/registrar/Registrar.cpp +++ b/src/servers/registrar/Registrar.cpp @@ -95,6 +95,9 @@ Registrar::MessageReceived(BMessage *message) case B_REG_SET_THREAD_AND_TEAM: fRoster->HandleSetThreadAndTeam(message); break; + case B_REG_SET_SIGNATURE: + fRoster->HandleSetSignature(message); + break; case B_REG_GET_APP_INFO: fRoster->HandleGetAppInfo(message); break; diff --git a/src/servers/registrar/TRoster.cpp b/src/servers/registrar/TRoster.cpp index 937bc9c34c..2e57215ad4 100644 --- a/src/servers/registrar/TRoster.cpp +++ b/src/servers/registrar/TRoster.cpp @@ -462,6 +462,43 @@ PRINT(("team: %ld, thread: %ld, token: %lu\n", team, thread, token)); FUNCTION_END(); } +// HandleSetSignature +/*! \brief Handles a SetSignature() request. + \param request The request message +*/ +void +TRoster::HandleSetSignature(BMessage *request) +{ + FUNCTION_START(); + + status_t error = B_OK; + // get the parameters + team_id team; + const char *signature; + if (request->FindInt32("team", &team) != B_OK) + error = B_BAD_VALUE; + if (request->FindString("signature", &signature) != B_OK) + error = B_BAD_VALUE; + // find the app and set the signature + if (error == B_OK) { + if (RosterAppInfo *info = fRegisteredApps.InfoFor(team)) + strcpy(info->signature, signature); + else + SET_ERROR(error, B_REG_APP_NOT_REGISTERED); + } + // reply to the request + if (error == B_OK) { + BMessage reply(B_REG_SUCCESS); + request->SendReply(&reply); + } else { + BMessage reply(B_REG_ERROR); + reply.AddInt32("error", error); + request->SendReply(&reply); + } + + FUNCTION_END(); +} + // HandleGetAppInfo /*! \brief Handles a Get{Running,Active,}AppInfo() request. \param request The request message diff --git a/src/servers/registrar/TRoster.h b/src/servers/registrar/TRoster.h index 9cd8743e9a..cea0fb4394 100644 --- a/src/servers/registrar/TRoster.h +++ b/src/servers/registrar/TRoster.h @@ -58,6 +58,7 @@ public: void HandleRemovePreRegApp(BMessage *request); void HandleRemoveApp(BMessage *request); void HandleSetThreadAndTeam(BMessage *request); + void HandleSetSignature(BMessage *request); void HandleGetAppInfo(BMessage *request); void HandleGetAppList(BMessage *request); void HandleActivateApp(BMessage *request);