[
https://issues.apache.org/jira/browse/TS-4553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15359648#comment-15359648
]
ASF GitHub Bot commented on TS-4553:
------------------------------------
Github user caricaturecm commented on a diff in the pull request:
https://github.com/apache/trafficserver/pull/776#discussion_r69356811
--- Diff: plugins/experimental/brotli_transform/brotli_transform.cc ---
@@ -0,0 +1,248 @@
+/**
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#include <iostream>
+#include <vector>
+#include <zlib.h>
+#include <atscppapi/GlobalPlugin.h>
+#include <atscppapi/TransformationPlugin.h>
+#include <atscppapi/PluginInit.h>
+#include <atscppapi/Logger.h>
+#include <brotli/enc/encode.h>
+
+using namespace atscppapi;
+using namespace std;
+
+#define TAG "brotli_transformation"
+
+namespace
+{
+const int WINDOW_BITS = 31; // Always use 31 for gzip.
+unsigned int INFLATE_SCALE_FACTOR = 6;
+unsigned int BROTLI_QUALITY = 9;
+}
+
+class GzipInflateTransformationState : noncopyable
+{
+public:
+ z_stream z_stream_;
+ bool z_stream_initialized_;
+ int64_t bytes_produced_;
+ TransformationPlugin::Type transformation_type_;
+
+ GzipInflateTransformationState(TransformationPlugin::Type type)
+ : z_stream_initialized_(false), bytes_produced_(0),
transformation_type_(type)
+ {
+ memset(&z_stream_, 0, sizeof(z_stream_));
+
+ int err = inflateInit2(&z_stream_, WINDOW_BITS);
+ if (Z_OK != err) {
+ TS_ERROR(TAG, "inflateInit2 failed with error code '%d'.", err);
+ } else {
+ z_stream_initialized_ = true;
+ }
+ };
+
+ ~GzipInflateTransformationState()
+ {
+ if (z_stream_initialized_) {
+ int err = inflateEnd(&z_stream_);
+ if (Z_OK != err && Z_STREAM_END != err) {
+ TS_ERROR(TAG, "Unable to inflateEnd(), returned error code '%d'",
err);
+ }
+ }
+ };
+};
+
+class BrotliVecOut : public brotli::BrotliOut
--- End diff --
@bgaff Hi Brain, I think I can not use the Transform.produce() directly.
Because the function produce() in the base class TransformationPlugin is
protected.
> Add Brotli compression support
> ------------------------------
>
> Key: TS-4553
> URL: https://issues.apache.org/jira/browse/TS-4553
> Project: Traffic Server
> Issue Type: Wish
> Components: Plugins
> Reporter: David Calavera
> Fix For: sometime
>
>
> I think it would be very interesting to add support for the Brotli
> compression format: https://github.com/google/brotli
> Since I didn't see any issue opened and went ahead so people can discuss
> about it.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)