From X512 <danger_mail@xxxxxxx>:
X512 has uploaded this change for review. (
https://review.haiku-os.org/c/haiku/+/2940 ;)
Change subject: BLooper: implement scripting
......................................................................
BLooper: implement scripting
"Handlers" property is still not implemented.
Change-Id: I73dd301ca7109675a4b629464ba7275a8095c77b
---
M src/kits/app/Looper.cpp
1 file changed, 46 insertions(+), 2 deletions(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/40/2940/1
diff --git a/src/kits/app/Looper.cpp b/src/kits/app/Looper.cpp
index e10f684..8f893a0 100644
--- a/src/kits/app/Looper.cpp
+++ b/src/kits/app/Looper.cpp
@@ -18,6 +18,7 @@
#include <new>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <Autolock.h>
#include <Message.h>
@@ -284,8 +285,51 @@
void
BLooper::MessageReceived(BMessage* message)
{
- // TODO: implement scripting support
- BHandler::MessageReceived(message);
+ if (!message->HasSpecifiers()) {
+ BHandler::MessageReceived(message);
+ return;
+ }
+
+ BMessage replyMsg(B_REPLY);
+ status_t err = B_BAD_SCRIPT_SYNTAX;
+ int32 index;
+ BMessage specifier;
+ int32 what;
+ const char* property;
+
+ if (message->GetCurrentSpecifier(&index, &specifier, &what, &property)
+ != B_OK) {
+ return BHandler::MessageReceived(message);
+ }
+
+ BPropertyInfo propertyInfo(sLooperPropInfo);
+ switch (propertyInfo.FindMatch(message, index, &specifier, what,
+ property)) {
+ case 1:
+ // TODO: investigate what "Handlers" property means and
implement
+ if (message->what == B_GET_PROPERTY)
+ err = B_NOT_SUPPORTED;
+ break;
+ case 2:
+ if (message->what == B_COUNT_PROPERTIES)
+ err = replyMsg.AddInt32("result",
CountHandlers());
+ break;
+
+ default:
+ return BHandler::MessageReceived(message);
+ }
+
+ if (err != B_OK) {
+ replyMsg.what = B_MESSAGE_NOT_UNDERSTOOD;
+
+ if (err == B_BAD_SCRIPT_SYNTAX)
+ replyMsg.AddString("message", "Didn't understand the
specifier(s)");
+ else
+ replyMsg.AddString("message", strerror(err));
+ }
+
+ replyMsg.AddInt32("error", err);
+ message->SendReply(&replyMsg);
}
--
To view, visit https://review.haiku-os.org/c/haiku/+/2940
To unsubscribe, or for help writing mail filters, visit
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I73dd301ca7109675a4b629464ba7275a8095c77b
Gerrit-Change-Number: 2940
Gerrit-PatchSet: 1
Gerrit-Owner: X512 <danger_mail@xxxxxxx>
Gerrit-MessageType: newchange