blob: 35bb1a3cd43733536051492e4627383dd96955df [file] [log] [blame]
// Copyright 2012 Google Inc.
//
// Licensed 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.
//
// Author: morlovich@google.com (Maksim Orlovich)
//
// Interfaces with mod_spdy's exported functions.
#ifndef PAGESPEED_APACHE_INTERFACE_MOD_SPDY_H_
#define PAGESPEED_APACHE_INTERFACE_MOD_SPDY_H_
#include "util_filter.h"
#include "third_party/mod_spdy/src/mod_spdy/apache/slave_connection_api.h"
struct conn_rec;
namespace net_instaweb {
// Needs to be called from a ap_hook_optional_fn_retrieve hook.
void attach_mod_spdy();
// If the connection is using SPDY with mod_spdy, returns the protocol
// version. Otherwise, returns 0.
int mod_spdy_get_spdy_version(conn_rec* conn);
// See mod_spdy's slave_connection_api.h for description of the methods below.
// These are merely forwarding wrappers with some CHECKS.
// Note that this method will return NULL if the relevant mod_spdy methods
// weren't found registered with Apache. Others, however, will CHECK-fail
// (since there is no sensible way to call them if this method failed);
// except you can always safely mod_spdy_destroy_slave_connection_factory(NULL).
spdy_slave_connection_factory* mod_spdy_create_slave_connection_factory(
conn_rec* master_connection);
void mod_spdy_destroy_slave_connection_factory(
spdy_slave_connection_factory* factory);
spdy_slave_connection* mod_spdy_create_slave_connection(
spdy_slave_connection_factory* factory,
ap_filter_rec_t* input_filter,
void* input_filter_ctx,
ap_filter_rec_t* output_filter,
void* output_filter_ctx);
void mod_spdy_run_slave_connection(spdy_slave_connection* conn);
void mod_spdy_destroy_slave_connection(spdy_slave_connection* conn);
// Returns true if given connection is using HTTPS.
// (This is actually a mod_ssl function).
bool mod_ssl_is_https(conn_rec* conn);
} // namespace net_instaweb
#endif // PAGESPEED_APACHE_INTERFACE_MOD_SPDY_H_