Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(538)

Unified Diff: runtime/bin/filter.h

Issue 11275035: Introduce (private) ZLibFilter to dart:io. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Move bufferlength out as a top level constant. Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/bin/filter.h
diff --git a/runtime/bin/filter.h b/runtime/bin/filter.h
new file mode 100644
index 0000000000000000000000000000000000000000..dcdfba87a86279caf0cae4b6115437af5d0060d2
--- /dev/null
+++ b/runtime/bin/filter.h
@@ -0,0 +1,70 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+#ifndef BIN_FILTER_H_
+#define BIN_FILTER_H_
+
+#include "bin/builtin.h"
+#include "bin/utils.h"
+
+#include "third_party/zlib/zlib.h"
+
+class Filter {
+ protected:
+ Filter() {}
+
+ public:
+ virtual ~Filter() {}
+
+ public:
+ virtual bool Init() = 0;
+ /**
+ * On a succesfull call to Process, Process will take ownership of data.
+ */
+ virtual bool Process(uint8_t* data, intptr_t length) = 0;
+ virtual intptr_t Processed(uint8_t* buffer, intptr_t length, bool finish) = 0;
+
+
+ public:
+ static Dart_Handle SetFilterPointerNativeField(Dart_Handle filter,
+ Filter* filter_pointer);
+ static Dart_Handle GetFilterPointerNativeField(Dart_Handle filter,
+ Filter** filter_pointer);
+};
+
+class ZLibDeflateFilter : public Filter {
+ public:
+ ZLibDeflateFilter(bool gZip = false, int level = 6)
+ : gZip(gZip), level(level), current_buffer(NULL) {}
+ virtual ~ZLibDeflateFilter();
+
+ public:
+ virtual bool Init();
+ virtual bool Process(uint8_t* data, intptr_t length);
+ virtual intptr_t Processed(uint8_t* buffer, intptr_t length, bool finish);
+
+ private:
+ const bool gZip;
+ const int level;
+ uint8_t* current_buffer;
+ z_stream stream;
+};
+
+class ZLibInflateFilter : public Filter {
+ public:
+ ZLibInflateFilter() : current_buffer(NULL) {}
+ virtual ~ZLibInflateFilter();
+
+ public:
+ virtual bool Init();
+ virtual bool Process(uint8_t* data, intptr_t length);
+ virtual intptr_t Processed(uint8_t* buffer, intptr_t length, bool finish);
+
+ private:
+ uint8_t* current_buffer;
+ z_stream stream;
+};
+
+#endif // BIN_FILTER_H_
+
« no previous file with comments | « runtime/bin/builtin_natives.cc ('k') | runtime/bin/filter.cc » ('j') | runtime/bin/filter.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698