1 // Copyright 2006 Alp Toker <alp@atoker.com>
2 // This software is made available under the MIT License
3 // See COPYING for details
6 using System
.Collections
.Generic
;
15 Header
.Endianness
= Connection
.NativeEndianness
;
16 Header
.MessageType
= MessageType
.MethodCall
;
17 Header
.Flags
= HeaderFlag
.NoReplyExpected
; //TODO: is this the right place to do this?
18 Header
.MajorVersion
= Protocol
.Version
;
19 Header
.Fields
= new Dictionary
<FieldCode
,object> ();
24 public Connection Connection
;
26 public Signature Signature
30 if (Header
.Fields
.TryGetValue (FieldCode
.Signature
, out o
))
33 return Signature
.Empty
;
35 if (value == Signature
.Empty
)
36 Header
.Fields
.Remove (FieldCode
.Signature
);
38 Header
.Fields
[FieldCode
.Signature
] = value;
42 public bool ReplyExpected
45 return (Header
.Flags
& HeaderFlag
.NoReplyExpected
) == HeaderFlag
.None
;
48 Header
.Flags
&= ~HeaderFlag
.NoReplyExpected
; //flag off
50 Header
.Flags
|= HeaderFlag
.NoReplyExpected
; //flag on
54 //public HeaderField[] HeaderFields;
55 //public Dictionary<FieldCode,object>;
59 //TODO: make use of Locked
61 protected bool locked = false;
70 public void SetHeaderData (byte[] data
)
72 EndianFlag endianness
= (EndianFlag
)data
[0];
73 MessageReader reader
= new MessageReader (endianness
, data
);
75 Header
= (Header
)reader
.ReadStruct (typeof (Header
));
78 public byte[] GetHeaderData ()
81 Header
.Length
= (uint)Body
.Length
;
83 MessageWriter writer
= new MessageWriter (Header
.Endianness
);
84 writer
.WriteValueType (Header
, typeof (Header
));
87 return writer
.ToArray ();