1732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// Copyright 2009 Google Inc.
2732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com//
3732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// Licensed under the Apache License, Version 2.0 (the "License");
4732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// you may not use this file except in compliance with the License.
5732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// You may obtain a copy of the License at
6732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com//
7732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com//      http://www.apache.org/licenses/LICENSE-2.0
8732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com//
9732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// Unless required by applicable law or agreed to in writing, software
10732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// distributed under the License is distributed on an "AS IS" BASIS,
11732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// See the License for the specific language governing permissions and
13732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// limitations under the License.
14732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com
15732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com#ifndef OPEN_VCDIFF_FORMAT_EXTENSION_FLAGS_H_
16732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com#define OPEN_VCDIFF_FORMAT_EXTENSION_FLAGS_H_
17732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com
18732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.comnamespace open_vcdiff {
19732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com
20732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// These flags are passed to the constructor of VCDiffStreamingEncoder
21732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// to determine whether certain open-vcdiff format extensions
22732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// (which are not part of the RFC 3284 draft standard for VCDIFF)
23732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// are employed.
24732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com//
25732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// Because these extensions are not part of the VCDIFF standard, if
26732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// any of these flags except VCD_STANDARD_FORMAT is specified, then the caller
27732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// must be certain that the receiver of the data will be using open-vcdiff
28732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// to decode the delta file, or at least that the receiver can interpret
29732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// these extensions.  The encoder will use an 'S' as the fourth character
30732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com// in the delta file to indicate that non-standard extensions are being used.
31732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com//
32732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.comenum VCDiffFormatExtensionFlagValues {
33732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // No extensions: the encoded format will conform to the RFC
34732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // draft standard for VCDIFF.
35732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  VCD_STANDARD_FORMAT = 0x00,
36732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // If this flag is specified, then the encoder writes each delta file
37732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // window by interleaving instructions and sizes with their corresponding
38732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // addresses and data, rather than placing these elements
39732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // into three separate sections.  This facilitates providing partially
40732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // decoded results when only a portion of a delta file window is received
41732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // (e.g. when HTTP over TCP is used as the transmission protocol.)
42732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  VCD_FORMAT_INTERLEAVED = 0x01,
43732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // If this flag is specified, then an Adler32 checksum
44732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // of the target window data is included in the delta window.
45732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  VCD_FORMAT_CHECKSUM = 0x02,
46732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // If this flag is specified, the encoder will output a JSON string
47732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // instead of the VCDIFF file format. If this flag is set, all other
48732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  // flags have no effect.
49732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com  VCD_FORMAT_JSON = 0x04
50732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com};
51732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com
52732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.comtypedef int VCDiffFormatExtensionFlags;
53732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com
54732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com}  // namespace open_vcdiff
55732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com
56732fff248e662ec47aa27c124632f406f27b6c8dopenvcdiff@gmail.com#endif  // OPEN_VCDIFF_FORMAT_EXTENSION_FLAGS_H_
57