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 <cstdint> 13 14 #include "absl/strings/string_view.h" 15 #include "quiche/common/platform/api/quiche_export.h" 16 #include "quiche/spdy/core/http2_frame_decoder_adapter.h" 17 #include "quiche/spdy/core/spdy_protocol.h" 18 19 namespace spdy { 20 21 class QUICHE_EXPORT SpdyNoOpVisitor : public SpdyFramerVisitorInterface, 22 public SpdyFramerDebugVisitorInterface, 23 public SpdyHeadersHandlerInterface { 24 public: 25 SpdyNoOpVisitor(); 26 ~SpdyNoOpVisitor() override; 27 28 // SpdyFramerVisitorInterface methods: OnError(http2::Http2DecoderAdapter::SpdyFramerError,std::string)29 void OnError(http2::Http2DecoderAdapter::SpdyFramerError /*error*/, 30 std::string /*detailed_error*/) override {} 31 SpdyHeadersHandlerInterface* OnHeaderFrameStart( 32 SpdyStreamId stream_id) override; OnHeaderFrameEnd(SpdyStreamId)33 void OnHeaderFrameEnd(SpdyStreamId /*stream_id*/) override {} OnDataFrameHeader(SpdyStreamId,size_t,bool)34 void OnDataFrameHeader(SpdyStreamId /*stream_id*/, size_t /*length*/, 35 bool /*fin*/) override {} OnStreamFrameData(SpdyStreamId,const char *,size_t)36 void OnStreamFrameData(SpdyStreamId /*stream_id*/, const char* /*data*/, 37 size_t /*len*/) override {} OnStreamEnd(SpdyStreamId)38 void OnStreamEnd(SpdyStreamId /*stream_id*/) override {} OnStreamPadding(SpdyStreamId,size_t)39 void OnStreamPadding(SpdyStreamId /*stream_id*/, size_t /*len*/) override {} OnRstStream(SpdyStreamId,SpdyErrorCode)40 void OnRstStream(SpdyStreamId /*stream_id*/, 41 SpdyErrorCode /*error_code*/) override {} OnSetting(SpdySettingsId,uint32_t)42 void OnSetting(SpdySettingsId /*id*/, uint32_t /*value*/) override {} OnPing(SpdyPingId,bool)43 void OnPing(SpdyPingId /*unique_id*/, bool /*is_ack*/) override {} OnSettingsEnd()44 void OnSettingsEnd() override {} OnSettingsAck()45 void OnSettingsAck() override {} OnGoAway(SpdyStreamId,SpdyErrorCode)46 void OnGoAway(SpdyStreamId /*last_accepted_stream_id*/, 47 SpdyErrorCode /*error_code*/) override {} OnHeaders(SpdyStreamId,size_t,bool,int,SpdyStreamId,bool,bool,bool)48 void OnHeaders(SpdyStreamId /*stream_id*/, size_t /*payload_length*/, 49 bool /*has_priority*/, int /*weight*/, 50 SpdyStreamId /*parent_stream_id*/, bool /*exclusive*/, 51 bool /*fin*/, bool /*end*/) override {} OnWindowUpdate(SpdyStreamId,int)52 void OnWindowUpdate(SpdyStreamId /*stream_id*/, 53 int /*delta_window_size*/) override {} OnPushPromise(SpdyStreamId,SpdyStreamId,bool)54 void OnPushPromise(SpdyStreamId /*stream_id*/, 55 SpdyStreamId /*promised_stream_id*/, 56 bool /*end*/) override {} OnContinuation(SpdyStreamId,size_t,bool)57 void OnContinuation(SpdyStreamId /*stream_id*/, size_t /*payload_size*/, 58 bool /*end*/) override {} OnAltSvc(SpdyStreamId,absl::string_view,const SpdyAltSvcWireFormat::AlternativeServiceVector &)59 void OnAltSvc(SpdyStreamId /*stream_id*/, absl::string_view /*origin*/, 60 const SpdyAltSvcWireFormat::AlternativeServiceVector& 61 /*altsvc_vector*/) override {} OnPriority(SpdyStreamId,SpdyStreamId,int,bool)62 void OnPriority(SpdyStreamId /*stream_id*/, SpdyStreamId /*parent_stream_id*/, 63 int /*weight*/, bool /*exclusive*/) override {} OnPriorityUpdate(SpdyStreamId,absl::string_view)64 void OnPriorityUpdate(SpdyStreamId /*prioritized_stream_id*/, 65 absl::string_view /*priority_field_value*/) override {} 66 bool OnUnknownFrame(SpdyStreamId /*stream_id*/, 67 uint8_t /*frame_type*/) override; OnUnknownFrameStart(SpdyStreamId,size_t,uint8_t,uint8_t)68 void OnUnknownFrameStart(SpdyStreamId /*stream_id*/, size_t /*length*/, 69 uint8_t /*type*/, uint8_t /*flags*/) override {} OnUnknownFramePayload(SpdyStreamId,absl::string_view)70 void OnUnknownFramePayload(SpdyStreamId /*stream_id*/, 71 absl::string_view /*payload*/) override {} 72 73 // SpdyFramerDebugVisitorInterface methods: OnSendCompressedFrame(SpdyStreamId,SpdyFrameType,size_t,size_t)74 void OnSendCompressedFrame(SpdyStreamId /*stream_id*/, SpdyFrameType /*type*/, 75 size_t /*payload_len*/, 76 size_t /*frame_len*/) override {} OnReceiveCompressedFrame(SpdyStreamId,SpdyFrameType,size_t)77 void OnReceiveCompressedFrame(SpdyStreamId /*stream_id*/, 78 SpdyFrameType /*type*/, 79 size_t /*frame_len*/) override {} 80 81 // SpdyHeadersHandlerInterface methods: OnHeaderBlockStart()82 void OnHeaderBlockStart() override {} OnHeader(absl::string_view,absl::string_view)83 void OnHeader(absl::string_view /*key*/, 84 absl::string_view /*value*/) override {} OnHeaderBlockEnd(size_t,size_t)85 void OnHeaderBlockEnd(size_t /* uncompressed_header_bytes */, 86 size_t /* compressed_header_bytes */) override {} 87 }; 88 89 } // namespace spdy 90 91 #endif // QUICHE_SPDY_CORE_SPDY_NO_OP_VISITOR_H_ 92