-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDefaultHttpMessage.cs
74 lines (61 loc) · 2.38 KB
/
DefaultHttpMessage.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// Copyright (c) Microsoft. All rights reserved.
// Copyright (c) Ikpil Choi ikpil@naver.com All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
// ReSharper disable ConvertToAutoPropertyWhenPossible
// ReSharper disable ConvertToAutoProperty
// ReSharper disable ConvertToAutoPropertyWithPrivateSetter
namespace UniNetty.Codecs.Http
{
using System.Diagnostics.Contracts;
public abstract class DefaultHttpMessage : DefaultHttpObject, IHttpMessage
{
const int HashCodePrime = 31;
HttpVersion version;
readonly HttpHeaders headers;
protected DefaultHttpMessage(HttpVersion version) : this(version, true, false)
{
}
protected DefaultHttpMessage(HttpVersion version, bool validateHeaders, bool singleFieldHeaders)
{
Contract.Requires(version != null);
this.version = version;
this.headers = singleFieldHeaders
? new CombinedHttpHeaders(validateHeaders)
: new DefaultHttpHeaders(validateHeaders);
}
protected DefaultHttpMessage(HttpVersion version, HttpHeaders headers)
{
Contract.Requires(version != null);
Contract.Requires(headers != null);
this.version = version;
this.headers = headers;
}
public HttpHeaders Headers => this.headers;
public HttpVersion ProtocolVersion => this.version;
public override int GetHashCode()
{
int result = 1;
result = HashCodePrime * result + this.headers.GetHashCode();
// ReSharper disable once NonReadonlyMemberInGetHashCode
result = HashCodePrime * result + this.version.GetHashCode();
result = HashCodePrime * result + base.GetHashCode();
return result;
}
public override bool Equals(object obj)
{
if (!(obj is DefaultHttpMessage other))
{
return false;
}
return this.headers.Equals(other.headers)
&& this.version.Equals(other.version)
&& base.Equals(obj);
}
public IHttpMessage SetProtocolVersion(HttpVersion value)
{
Contract.Requires(value != null);
this.version = value;
return this;
}
}
}