xref: /haiku/src/add-ons/kernel/file_systems/netfs/shared/AttrDirInfo.cpp (revision 5a1d355fdf2747f80f8c46e2539f844a0b813346)
1*5a1d355fSStephan Aßmus // AttrDirInfo.cpp
2*5a1d355fSStephan Aßmus 
3*5a1d355fSStephan Aßmus #include "AttrDirInfo.h"
4*5a1d355fSStephan Aßmus 
5*5a1d355fSStephan Aßmus // ShowAround
6*5a1d355fSStephan Aßmus void
ShowAround(RequestMemberVisitor * visitor)7*5a1d355fSStephan Aßmus AttributeInfo::ShowAround(RequestMemberVisitor* visitor)
8*5a1d355fSStephan Aßmus {
9*5a1d355fSStephan Aßmus 	visitor->Visit(this, name);
10*5a1d355fSStephan Aßmus 	visitor->Visit(this, info.type);
11*5a1d355fSStephan Aßmus 	visitor->Visit(this, info.size);
12*5a1d355fSStephan Aßmus 	visitor->Visit(this, data);
13*5a1d355fSStephan Aßmus }
14*5a1d355fSStephan Aßmus 
15*5a1d355fSStephan Aßmus 
16*5a1d355fSStephan Aßmus // #pragma mark -
17*5a1d355fSStephan Aßmus 
18*5a1d355fSStephan Aßmus // constructor
AttrDirInfo()19*5a1d355fSStephan Aßmus AttrDirInfo::AttrDirInfo()
20*5a1d355fSStephan Aßmus 	: revision(-1),
21*5a1d355fSStephan Aßmus 	  isValid(false)
22*5a1d355fSStephan Aßmus {
23*5a1d355fSStephan Aßmus }
24*5a1d355fSStephan Aßmus 
25*5a1d355fSStephan Aßmus // ShowAround
26*5a1d355fSStephan Aßmus void
ShowAround(RequestMemberVisitor * visitor)27*5a1d355fSStephan Aßmus AttrDirInfo::ShowAround(RequestMemberVisitor* visitor)
28*5a1d355fSStephan Aßmus {
29*5a1d355fSStephan Aßmus 	visitor->Visit(this, isValid);
30*5a1d355fSStephan Aßmus 	if (isValid) {
31*5a1d355fSStephan Aßmus 		visitor->Visit(this, revision);
32*5a1d355fSStephan Aßmus 		visitor->Visit(this, attributeInfos);
33*5a1d355fSStephan Aßmus 	}
34*5a1d355fSStephan Aßmus }
35*5a1d355fSStephan Aßmus 
36*5a1d355fSStephan Aßmus // Flatten
37*5a1d355fSStephan Aßmus status_t
Flatten(RequestFlattener * flattener)38*5a1d355fSStephan Aßmus AttrDirInfo::Flatten(RequestFlattener* flattener)
39*5a1d355fSStephan Aßmus {
40*5a1d355fSStephan Aßmus 	flattener->WriteBool(isValid);
41*5a1d355fSStephan Aßmus 	if (isValid) {
42*5a1d355fSStephan Aßmus 		flattener->Visit(this, revision);
43*5a1d355fSStephan Aßmus 		flattener->Visit(this, attributeInfos);
44*5a1d355fSStephan Aßmus 	}
45*5a1d355fSStephan Aßmus 
46*5a1d355fSStephan Aßmus 	return flattener->GetStatus();
47*5a1d355fSStephan Aßmus }
48*5a1d355fSStephan Aßmus 
49*5a1d355fSStephan Aßmus // Unflatten
50*5a1d355fSStephan Aßmus status_t
Unflatten(RequestUnflattener * unflattener)51*5a1d355fSStephan Aßmus AttrDirInfo::Unflatten(RequestUnflattener* unflattener)
52*5a1d355fSStephan Aßmus {
53*5a1d355fSStephan Aßmus 	if (unflattener->ReadBool(isValid) == B_OK && isValid) {
54*5a1d355fSStephan Aßmus 		unflattener->Visit(this, revision);
55*5a1d355fSStephan Aßmus 		unflattener->Visit(this, attributeInfos);
56*5a1d355fSStephan Aßmus 	}
57*5a1d355fSStephan Aßmus 
58*5a1d355fSStephan Aßmus 	return unflattener->GetStatus();
59*5a1d355fSStephan Aßmus }
60*5a1d355fSStephan Aßmus 
61