[haiku-development] Re: Using the Flatten() function

  • From: "Yashasvi A.C." <yashasviac@xxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Sat, 1 Aug 2009 22:09:23 +1200

Hi,

Thanks for the explanation guys. I understand how it works now. We have a
BFile created, which is then used in the Flatten() function as it a BDateIO
object.

So, what I have done is the following excerpt:
.....
BFile stream = BFile("/home/yash/...../Message", B_CREATE_FILE |
B_ERASE_FILE | B_WRITE_ONLY);
message -> Flatten(&stream);
....

Note:
(1) Message in the path string is a file that I had just created. Its an
empty file (of course :) ).
(2) the message variable in the second line is the BMessage parameter that
is obtained from the message_print_hook(BMessage*, BHandler**,
BMessageFilter*) function.

On running the code, the messages are displayed (in the console using a
println function), but on opening the Message file, nothing is present in
it. Am I missing something here?

Thanks,
Yash

On Sat, Aug 1, 2009 at 2:39 AM, Stephan Assmus <superstippi@xxxxxx> wrote:

> Hi,
>
> On 2009-07-31 at 16:28:17 [+0200], Yashasvi A.C. <yashasviac@xxxxxxxxx>
> wrote:
> > On Thu, Jul 30, 2009 at 2:07 AM, Axel Dörfler
> > <axeld@xxxxxxxxxxxxxxxx>wrote:
> > > "Yashasvi A.C." <yashasviac@xxxxxxxxx> wrote:
> > > > file = BFile("..\", "..\MessageStore\", B_READ_WRITE);
> > >
> > > Flattening writes into the BDataIO (it's a stream), it doesn't generate
> > > new files in a folder. You need to open the files you want to flatten
> > > the BMessage into directly.
> > >
> > So, you mean I open a file in a read-write format and then use the
> > flatten function. How does the flatten() know which file it needs to
> > stream the data to?
>
> Because you pass it the file object of course:
>
> BFile stream("path/to/file", B_CREATE_FILE | B_ERASE_FILE | B_WRITE_ONLY);
> message.Flatten(&stream);
>
>
> Best regards,
> -Stephan
>
>

Other related posts: