1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // SpdyNoOpVisitor implements several of the visitor and handler interfaces 6 // to make it easier to write tests that need to provide instances. Other 7 // interfaces can be added as needed. 8 9 #ifndef QUICHE_SPDY_CORE_SPDY_NO_OP_VISITOR_H_ 10 #define QUICHE_SPDY_CORE_SPDY_NO_OP_VISITOR_H_ 11 12 #include <cstddef> 13 #include <cstdint> 14 #include <string> 15 16 #include "absl/strings/string_view.h" 17 #include "quiche/common/platform/api/quiche_export.h" 18 #include "quiche/spdy/core/http2_frame_decoder_adapter.h" 19 #include "quiche/spdy/core/spdy_alt_svc_wire_format.h" 20 #include "quiche/spdy/core/spdy_headers_handler_interface.h" 21 #include "quiche/spdy/core/spdy_protocol.h" 22 23 namespace spdy { 24 25 class QUICHE_EXPORT SpdyNoOpVisitor : public SpdyFramerVisitorInterface, 26 public SpdyFramerDebugVisitorInterface, 27 public SpdyHeadersHandlerInterface { 28 public: 29 SpdyNoOpVisitor(); 30 ~SpdyNoOpVisitor() override; 31 32 // SpdyFramerVisitorInterface methods: OnError(http2::Http2DecoderAdapter::SpdyFramerError,std::string)33 void OnError(http2::Http2DecoderAdapter::SpdyFramerError /*error*/, 34 std::string /*detailed_error*/) override {} 35 SpdyHeadersHandlerInterface* OnHeaderFrameStart( 36 SpdyStreamId stream_id) override; OnHeaderFrameEnd(SpdyStreamId)37 void OnHeaderFrameEnd(SpdyStreamId /*stream_id*/) override {} OnDataFrameHeader(SpdyStreamId,size_t,bool)38 void OnDataFrameHeader(SpdyStreamId /*stream_id*/, size_t /*length*/, 39 bool /*fin*/) override {} OnStreamFrameData(SpdyStreamId,const char *,size_t)40 void OnStreamFrameData(SpdyStreamId /*stream_id*/, const char* /*data*/, 41 size_t /*len*/) override {} OnStreamEnd(SpdyStreamId)42 void OnStreamEnd(SpdyStreamId /*stream_id*/) override {} OnStreamPadding(SpdyStreamId,size_t)43 void OnStreamPadding(SpdyStreamId /*stream_id*/, size_t /*len*/) override {} OnRstStream(SpdyStreamId,SpdyErrorCode)44 void OnRstStream(SpdyStreamId /*stream_id*/, 45 SpdyErrorCode /*error_code*/) override {} OnSetting(SpdySettingsId,uint32_t)46 void OnSetting(SpdySettingsId /*id*/, uint32_t /*value*/) override {} OnPing(SpdyPingId,bool)47 void OnPing(SpdyPingId /*unique_id*/, bool /*is_ack*/) override {} OnSettingsEnd()48 void OnSettingsEnd() override {} OnSettingsAck()49 void OnSettingsAck() override {} OnGoAway(SpdyStreamId,SpdyErrorCode)50 void OnGoAway(SpdyStreamId /*last_accepted_stream_id*/, 51 SpdyErrorCode /*error_code*/) override {} OnHeaders(SpdyStreamId,size_t,bool,int,SpdyStreamId,bool,bool,bool)52 void OnHeaders(SpdyStreamId /*stream_id*/, size_t /*payload_length*/, 53 bool /*has_priority*/, int /*weight*/, 54 SpdyStreamId /*parent_stream_id*/, bool /*exclusive*/, 55 bool /*fin*/, bool /*end*/) override {} OnWindowUpdate(SpdyStreamId,int)56 void OnWindowUpdate(SpdyStreamId /*stream_id*/, 57 int /*delta_window_size*/) override {} OnPushPromise(SpdyStreamId,SpdyStreamId,bool)58 void OnPushPromise(SpdyStreamId /*stream_id*/, 59 SpdyStreamId /*promised_stream_id*/, 60 bool /*end*/) override {} OnContinuation(SpdyStreamId,size_t,bool)61 void OnContinuation(SpdyStreamId /*stream_id*/, size_t /*payload_size*/, 62 bool /*end*/) override {} OnAltSvc(SpdyStreamId,absl::string_view,const SpdyAltSvcWireFormat::AlternativeServiceVector &)63 void OnAltSvc(SpdyStreamId /*stream_id*/, absl::string_view /*origin*/, 64 const SpdyAltSvcWireFormat::AlternativeServiceVector& 65 /*altsvc_vector*/) override {} OnPriority(SpdyStreamId,SpdyStreamId,int,bool)66 void OnPriority(SpdyStreamId /*stream_id*/, SpdyStreamId /*parent_stream_id*/, 67 int /*weight*/, bool /*exclusive*/) override {} OnPriorityUpdate(SpdyStreamId,absl::string_view)68 void OnPriorityUpdate(SpdyStreamId /*prioritized_stream_id*/, 69 absl::string_view /*priority_field_value*/) override {} 70 bool OnUnknownFrame(SpdyStreamId /*stream_id*/, 71 uint8_t /*frame_type*/) override; OnUnknownFrameStart(SpdyStreamId,size_t,uint8_t,uint8_t)72 void OnUnknownFrameStart(SpdyStreamId /*stream_id*/, size_t /*length*/, 73 uint8_t /*type*/, uint8_t /*flags*/) override {} OnUnknownFramePayload(SpdyStreamId,absl::string_view)74 void OnUnknownFramePayload(SpdyStreamId /*stream_id*/, 75 absl::string_view /*payload*/) override {} 76 77 // SpdyFramerDebugVisitorInterface methods: OnSendCompressedFrame(SpdyStreamId,SpdyFrameType,size_t,size_t)78 void OnSendCompressedFrame(SpdyStreamId /*stream_id*/, SpdyFrameType /*type*/, 79 size_t /*payload_len*/, 80 size_t /*frame_len*/) override {} OnReceiveCompressedFrame(SpdyStreamId,SpdyFrameType,size_t)81 void OnReceiveCompressedFrame(SpdyStreamId /*stream_id*/, 82 SpdyFrameType /*type*/, 83 size_t /*frame_len*/) override {} 84 85 // SpdyHeadersHandlerInterface methods: OnHeaderBlockStart()86 void OnHeaderBlockStart() override {} OnHeader(absl::string_view,absl::string_view)87 void OnHeader(absl::string_view /*key*/, 88 absl::string_view /*value*/) override {} OnHeaderBlockEnd(size_t,size_t)89 void OnHeaderBlockEnd(size_t /* uncompressed_header_bytes */, 90 size_t /* compressed_header_bytes */) override {} 91 }; 92 93 } // namespace spdy 94 95 #endif // QUICHE_SPDY_CORE_SPDY_NO_OP_VISITOR_H_ 96