Home | History | Annotate | Download | only in google
      1 // Copyright 2009 Google Inc.
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //      http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 #ifndef OPEN_VCDIFF_FORMAT_EXTENSION_FLAGS_H_
     16 #define OPEN_VCDIFF_FORMAT_EXTENSION_FLAGS_H_
     17 
     18 namespace open_vcdiff {
     19 
     20 // These flags are passed to the constructor of VCDiffStreamingEncoder
     21 // to determine whether certain open-vcdiff format extensions
     22 // (which are not part of the RFC 3284 draft standard for VCDIFF)
     23 // are employed.
     24 //
     25 // Because these extensions are not part of the VCDIFF standard, if
     26 // any of these flags except VCD_STANDARD_FORMAT is specified, then the caller
     27 // must be certain that the receiver of the data will be using open-vcdiff
     28 // to decode the delta file, or at least that the receiver can interpret
     29 // these extensions.  The encoder will use an 'S' as the fourth character
     30 // in the delta file to indicate that non-standard extensions are being used.
     31 //
     32 enum VCDiffFormatExtensionFlagValues {
     33   // No extensions: the encoded format will conform to the RFC
     34   // draft standard for VCDIFF.
     35   VCD_STANDARD_FORMAT = 0x00,
     36   // If this flag is specified, then the encoder writes each delta file
     37   // window by interleaving instructions and sizes with their corresponding
     38   // addresses and data, rather than placing these elements
     39   // into three separate sections.  This facilitates providing partially
     40   // decoded results when only a portion of a delta file window is received
     41   // (e.g. when HTTP over TCP is used as the transmission protocol.)
     42   VCD_FORMAT_INTERLEAVED = 0x01,
     43   // If this flag is specified, then an Adler32 checksum
     44   // of the target window data is included in the delta window.
     45   VCD_FORMAT_CHECKSUM = 0x02,
     46   // If this flag is specified, the encoder will output a JSON string
     47   // instead of the VCDIFF file format. If this flag is set, all other
     48   // flags have no effect.
     49   VCD_FORMAT_JSON = 0x04
     50 };
     51 
     52 typedef int VCDiffFormatExtensionFlags;
     53 
     54 }  // namespace open_vcdiff
     55 
     56 #endif  // OPEN_VCDIFF_FORMAT_EXTENSION_FLAGS_H_
     57