Commit Graph
51 Commits
Author SHA1 Message Date
Axel Dörfler 9bce8e570a BMessage::AddString() no longer crashes when the string to add is NULL.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16410 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-15 17:15:49 +00:00
Axel Dörfler 05b4b0d7ce Node monitoring didn't work because unflattening KMessages didn't take the
message header into account. It worked before at some point as BLooper was
letting the looper handle messages to invalid targets - they are now just
dropped.
This fixes bug #93.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16045 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-23 13:30:17 +00:00
Michael Lotz 174459d703 Fix build when not using Message4.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15056 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-21 02:40:49 +00:00
Axel Dörfler 9e2023b10b * Fixed sending/receiving "use preferred handler" messages - it simply didn't
work before.
* Removed the private header fPreferredTarget field.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15047 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-20 16:58:34 +00:00
Axel Dörfler 4ceb1e519c * reverted Adi's premature changes to BWindow and restored _DetermineTarget() and
task_looper() again.
* removed BMessenger::fPreferred - whenever you had to specify "usePreferred" separately,
  you don't have to do that anymore - use B_PREFERRED_TOKEN instead.
* fixed BTokenSpace::GetToken() semantics: it will no longer touch the "object" argument
  in case of failure.
* Introduced a BWindow::_DistributeMessage() that will be part of the event dispatcher
  counterpart to the app_server (the other will be _DetermineTarget()).
* Made it easier to use Michael's Message4 implementation: just add the following line
  to your UserBuildConfig:
	AppendToConfigVar DEFINES : HAIKU_TOP src : USING_MESSAGE4 : global ;
* Introduced ServerWindow::HandlerMessenger() and FocusMessenger() - the first will
  target the client handler, while the other will target the preferred handler of the
  client looper (usually the view having focus).
* Fixed dano message unflattening in the Message4 code.
* Changed BMessage::PrintToStream() to no longer use macros in the Message4 implementation.
* I hope that's all - it's a huge change, but it's all connected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15046 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-20 16:24:23 +00:00
Axel Dörfler 1ba67cc8c6 * almost rewrote BMessageQueue; simplified code, removed over-extensive documentation,
cleanup.
* made BMessageQueue::IsLocked() const - the non-const version is still provided
  for binary compatibility.
* Both BMessageQueue::FindMessage() versions are now thread safe, the queue's BLocker
  is now mutable to allow for this.
* renamed BMessage::link to fQueueLink as the "Message4" implementation uses it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14955 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-16 13:01:59 +00:00
Jérôme Duval eddf2adc8a style change
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13783 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-20 07:41:18 +00:00
Jérôme Duval b8b9dc1c24 Fix FindPointer (tested with unit tests)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13675 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-14 15:07:26 +00:00
Axel Dörfler ea563033b2 Same as before, but for Replace*() methods: fixed memory leaks, small
optimazation for ReplaceFlat() (also done for AddFlat() before).
Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13662 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-13 18:34:11 +00:00
Axel Dörfler b9dddc39f3 Fixed some memory leaks in case of errors (Add*() only).
Some minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13661 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-13 18:25:23 +00:00
Jérôme Duval 1188944790 Readded TYPE()
Init Messenger, Ref, Message on error


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13659 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-13 15:56:46 +00:00
Jérôme Duval ce42d864ee Took Axel's remarks into account
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13655 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-13 09:23:21 +00:00
Jérôme Duval b0ba19ba3a Moved Add* through AddData, Find* through FindData, Replace* through ReplaceData
I think BMessageBody::FindData<>, BMessageBody::AddData<>, BMessageBody::ReplaceData<> could be untemplatized
Works here, not unit tested though
Axel, please review this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13653 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-12 23:21:29 +00:00
Axel Dörfler b1e14283b4 The stream was reused later, so it was a dumb idea to not include the
magic in it (it was written twice then, later).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13430 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 00:57:33 +00:00
Axel Dörfler 749a772b97 Accidently broke BMessage::_SendFlattenedMessage() with the last commit;
the magic is not part of the header anymore when read from a stream (because
BDataIO does not support seeking, and we need to know the magic before actually
reading the header).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13429 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 00:03:18 +00:00
Axel Dörfler dc9e836b35 *Very* basic read-only Dano/Zeta message support. Only briefly tested.
Not really suited for message sending/retrieval (because target stuff is
missing), but should work more or less with disk based messages.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13428 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-04 21:41:41 +00:00
Ingo Weinhold 2a862ff06f Got rid of the temporary BMessage in BMessage::_send_().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11450 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-22 13:07:55 +00:00
Jérôme Duval 0d0f1600ef fixes forwards of BMessages
iroster now works successfully


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11367 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-14 11:47:55 +00:00
Ingo Weinhold 09b770dd50 * Added Dump() to BMessage::Header for debugging purposes.
* In BMessage::Header::ReadFrom(DataIO &) the checksum was checked before
  the fBodySize field was initialized, which could make
  BMessage::Unflatten() fail.
* Calculate the header checksum now by writing the header to a buffer and
  checksumming that. This is simpler and avoids problems when something
  else is written than is actually stored in the header (e.g. when a
  preferred target token is replaced by B_PREFERRED_TOKEN).
While the BMessage unit tests always passed, now the other App Kit tests
pass as well.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11130 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-29 17:43:44 +00:00
Ingo Weinhold efbea3a07a Moved the functionality to flatten and unflatten a BMessage header into
a separate class. This allowed to improve _SendFlattenedMessage() to
deal properly with flattened BMessages as well.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11116 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-29 00:19:50 +00:00
Ingo Weinhold 534ef684d9 Turned _init_message_(), _delete_message_(), and _clean_msg_cache_() into
proper private static BMessage members and made them accessible through
BMessage::Private. Got rid of unused _reconstruct_message_().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11106 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-28 15:05:44 +00:00
Ingo Weinhold 9d0a9900f0 * Updated copyright date and added myself to the authors. :-)
* Removed 1500 lines of unused non-template-madness code. We have version
  control to resurrect it, if we ever wish to.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11105 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-28 14:50:01 +00:00
Ingo Weinhold 377872556d * Added support for unflatting from flattened KMessages. At least when
a buffer is given.
* Added method for sending flattened messages. The KMessage support is
  complete, but for BMessages this is a bit tricky. We currently unflatten
  the BMessages and send those.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11060 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-26 02:16:44 +00:00
Ingo Weinhold 4b8aafea9f BMessenger has no friends besides Private anymore.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11023 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-25 14:46:28 +00:00
Ingo Weinhold 26afdd622e * Added more debug output.
* In handle_reply(), in case the port message code is not as expected,
  don't return B_OK and let the caller proceed with an uninitialized
  BMessage, but return an error.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10762 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-15 21:47:41 +00:00
Ingo Weinhold c9f9a6b20d * fReplyTo.target (the handler token) is internally checked even, if the
preferred handler is addressed. So make sure, it has a usable value in
  this case, otherwise ReturnAddress() usually won't work.
* If the message to be read from the port is bigger than the on-stack
  buffer, the chunk of memory to be allocated on the heap has to be the
  size of the message, not the size of the on-stack buffer. This caused
  all kind of nasty, hard-trackable problems.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10677 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-12 03:20:15 +00:00
ejakowatz cc17162615 Added clarifying comments and a bit more error checking
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9744 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-02 21:36:27 +00:00
ejakowatz 059b143a70 The fWasDelivered member was never getting initialized, so replying to
messages which did not explicitely request a reply would fail.  The member
is now initialized if an unflattened message has the MSG_FLAG_INCL_REPLY
flag set.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9193 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-05 06:56:41 +00:00
ejakowatz 5958205f6c Fixed bug. There was an issue with unflattening. When moving dataPtr along the buffer to the next variable-size item, the padding was being incorrectly calculated (too large) because the four-byte size header was not being taken into account. E.g., for an 18-byte item, the padding was calculated as 6 bytes, rather than two, placing dataPtr directly past the size header for the next item. An incorrect value would be used as the size for the next item, which could result in anything from a segment violation to an allocation failure.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8891 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-07 23:33:31 +00:00
ejakowatz b9c2cb3cd1 BMessage now sends B_NO_REPLY on destruction if no reply has been sent.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8637 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-25 04:14:30 +00:00
DarkWyrm 3ceb31b96a Pahtz's changes from PortLink/BSession/PortMessage/PortQueue to BPortLink
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8519 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-07-30 15:15:27 +00:00
Axel Dörfler 576416d2d7 Fixed a warning about the uninitialized use of variable team.
Added a ToDo item because gcc is right and itemSize may be used uninitialized;
someone with a better understanding of this code should fix it.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8233 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-06-29 19:44:26 +00:00
Axel Dörfler 3905fad39d Added a ToDo comment about the missing reply sending on destruction (as reported by Ingo).
You don't have to check against NULL when deleting an object.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6674 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-22 16:38:24 +00:00
Axel Dörfler b7d3f36edc "Fixed" the write_port_etc() call: it used a hardcoded 8 instead of B_RELATIVE_TIMEOUT (ts ts ts).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6234 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-01-23 01:12:51 +00:00
ejakowatz b07c31a73f Finished up some scripting-related items.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5080 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-18 04:55:28 +00:00
shatty 1cfc49614f fixed BMessage::Flatten(x) so that it does not crash
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4710 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-09-16 03:45:51 +00:00
Ingo Weinhold 66abd4d0a6 Fixed a few warnings.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4381 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-08-26 21:36:38 +00:00
Ingo Weinhold 9f01bd9197 send_message(): B_ANY_TOKEN -> B_PREFERRED_TOKEN. That's the right one.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4380 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-08-26 15:29:11 +00:00
Ingo Weinhold d4d9f7015a flatten_hdr() checks the reply handler token for B_NULL_TOKEN, so it's not wise to use exactly that one as dummy for sending synchronous messages.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4379 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-08-26 15:07:06 +00:00
ejakowatz 0ab25acded Fixed bug with fBody not being properly initialized on construction.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4377 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-08-26 04:47:51 +00:00
ejakowatz e9e500cb9e Minor tweak to BHandler::UnlockLooper()
Added calls to _init_message_(), _delete_message_(), and
_msg_cache_cleanup() to InitTerminateLibBe.cpp
Finished first implementation of BMessage::SendReply(), BMessage::_send_(),
and BMessage::_send_message()
Add BMessage to app.src, removed BBlockCache from support.src.
New BMessage::Private class has functions for twiddling BMessage internals


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4371 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-08-25 07:55:52 +00:00
ejakowatz 0cc48ce6f9 Unit tests to ensure robust handling of bogus params to convenience funcs
plus fixes for the bugs they exposes.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3416 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-06-03 23:22:08 +00:00
ejakowatz df1b8782c7 Fixes for bugs in BFlattenable convenience functions (revealed by the new
unit tests).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3404 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-06-03 04:38:17 +00:00
ejakowatz 67833f26bc Fixed adding pointers. BMessage::AddPointer() was specifying const void*
as the template param (where everything else was using void*) and
BMessage::AddData() was adding the pointer to the pointer as the data.
Unit tests save the day again!


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3385 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-05-29 06:28:28 +00:00
ejakowatz 80e966963f Little tweaks and fixes too numerous to count, but mostly involved with
adding entry_refs and BMessages.  Lots of stuff for specifiers and also for
sending replies (with thanks to Mike Nordell).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3295 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-05-23 23:13:02 +00:00
ejakowatz 74d9216544 New tests for Add/Find/Replace/HasRef, and tweak in MessageTest.cpp to use
it.  Also, minor fix in entry_ref handling in BMessage::AddData().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2967 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-20 06:02:27 +00:00
ejakowatz e60c601e2d Tweaks to make the tests work correctly and properly scope a BMessage
function.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2966 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-20 05:37:07 +00:00
ejakowatz 9895f0ea8a Some clean up and tweaks to the specifier handling code, plus the
beginnings of SendReply() functionality.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2958 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-19 08:01:59 +00:00
ejakowatz 9abaf1dfa7 Resolved conflict. DarkWyrm tweaked the old version (which I had #if 0'd
out all over the place).  There is now a giant
#ifdef USING_TEMPLATE_MADNESS
separating the two versions.  At some point, the common code should be
reconciled.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2953 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-19 05:02:31 +00:00
DarkWyrm 53ea435d7b Multiple fixes and added to build. Not yet complete, but close
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2925 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-16 21:43:28 +00:00