1 #region Copyright notice and license
2 
3 // Copyright 2015-2016 gRPC authors.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 
17 #endregion
18 
19 using System;
20 
21 namespace Grpc.Core
22 {
23     /// <summary>
24     /// Flags for write operations.
25     /// </summary>
26     [Flags]
27     public enum WriteFlags
28     {
29         /// <summary>
30         /// Hint that the write may be buffered and need not go out on the wire immediately.
31         /// gRPC is free to buffer the message until the next non-buffered
32         /// write, or until write stream completion, but it need not buffer completely or at all.
33         /// </summary>
34         BufferHint = 0x1,
35 
36         /// <summary>
37         /// Force compression to be disabled for a particular write.
38         /// </summary>
39         NoCompress = 0x2
40     }
41 
42     /// <summary>
43     /// Options for write operations.
44     /// </summary>
45     public class WriteOptions
46     {
47         /// <summary>
48         /// Default write options.
49         /// </summary>
50         public static readonly WriteOptions Default = new WriteOptions();
51 
52         private readonly WriteFlags flags;
53 
54         /// <summary>
55         /// Initializes a new instance of <c>WriteOptions</c> class.
56         /// </summary>
57         /// <param name="flags">The write flags.</param>
WriteOptions(WriteFlags flags = default(WriteFlags))58         public WriteOptions(WriteFlags flags = default(WriteFlags))
59         {
60             this.flags = flags;
61         }
62 
63         /// <summary>
64         /// Gets the write flags.
65         /// </summary>
66         public WriteFlags Flags
67         {
68             get
69             {
70                 return this.flags;
71             }
72         }
73     }
74 }
75