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

Side by Side Diff: net/spdy/spdy_session.h

Issue 10233016: Add a new UMA histogram for tracking SpdySessionErrorDetails (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Correctly handle SpdyStatusCodes Created 8 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | net/spdy/spdy_session.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef NET_SPDY_SPDY_SESSION_H_ 5 #ifndef NET_SPDY_SPDY_SESSION_H_
6 #define NET_SPDY_SPDY_SESSION_H_ 6 #define NET_SPDY_SPDY_SESSION_H_
7 #pragma once 7 #pragma once
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <list> 10 #include <list>
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 // reasonably with ethernet. Chop the world into 2-packet chunks. This is 42 // reasonably with ethernet. Chop the world into 2-packet chunks. This is
43 // somewhat arbitrary, but is reasonably small and ensures that we elicit 43 // somewhat arbitrary, but is reasonably small and ensures that we elicit
44 // ACKs quickly from TCP (because TCP tries to only ACK every other packet). 44 // ACKs quickly from TCP (because TCP tries to only ACK every other packet).
45 const int kMss = 1430; 45 const int kMss = 1430;
46 const int kMaxSpdyFrameChunkSize = (2 * kMss) - SpdyFrame::kHeaderSize; 46 const int kMaxSpdyFrameChunkSize = (2 * kMss) - SpdyFrame::kHeaderSize;
47 47
48 class BoundNetLog; 48 class BoundNetLog;
49 class SpdyStream; 49 class SpdyStream;
50 class SSLInfo; 50 class SSLInfo;
51 51
52 enum SpdyProtocolErrorDetails {
53 // SpdyFramer::SpdyErrors
54 SPDY_ERROR_NO_ERROR,
55 SPDY_ERROR_INVALID_CONTROL_FRAME,
56 SPDY_ERROR_CONTROL_PAYLOAD_TOO_LARGE,
57 SPDY_ERROR_ZLIB_INIT_FAILURE,
58 SPDY_ERROR_UNSUPPORTED_VERSION,
59 SPDY_ERROR_DECOMPRESS_FAILURE,
60 SPDY_ERROR_COMPRESS_FAILURE,
61 SPDY_ERROR_CREDENTIAL_FRAME_CORRUPT,
62 SPDY_ERROR_INVALID_DATA_FRAME_FLAGS,
63
64 // SpdyStatusCodes
65 STATUS_CODE_INVALID,
66 STATUS_CODE_PROTOCOL_ERROR,
67 STATUS_CODE_INVALID_STREAM,
68 STATUS_CODE_REFUSED_STREAM,
69 STATUS_CODE_UNSUPPORTED_VERSION,
70 STATUS_CODE_CANCEL,
71 STATUS_CODE_INTERNAL_ERROR,
72 STATUS_CODE_FLOW_CONTROL_ERROR,
73 STATUS_CODE_STREAM_IN_USE,
74 STATUS_CODE_STREAM_ALREADY_CLOSED,
75 STATUS_CODE_INVALID_CREDENTIALS,
76 STATUS_CODE_FRAME_TOO_LARGE,
77
78 // SpdySession errors
79 PROTOCOL_ERROR_UNEXPECTED_PING,
80 PROTOCOL_ERROR_RST_STREAM_FOR_NON_ACTIVE_STREAM,
81 PROTOCOL_ERROR_SPDY_COMPRESSION_FAILURE,
82 PROTOCOL_ERROR_REQUST_FOR_SECURE_CONTENT_OVER_INSECURE_SESSION,
83 PROTOCOL_ERROR_SYN_REPLY_NOT_RECEIVED,
84 NUM_SPDY_PROTOCOL_ERROR_DETAILS
85 };
86
87 COMPILE_ASSERT(STATUS_CODE_INVALID ==
88 static_cast<SpdyProtocolErrorDetails>(SpdyFramer::LAST_ERROR),
89 SpdyProtocolErrorDetails_SpdyErrors_mismatch);
90
91 COMPILE_ASSERT(PROTOCOL_ERROR_UNEXPECTED_PING ==
92 static_cast<SpdyProtocolErrorDetails>(NUM_STATUS_CODES +
93 STATUS_CODE_INVALID),
94 SpdyProtocolErrorDetails_SpdyErrors_mismatch);
95
52 class NET_EXPORT SpdySession : public base::RefCounted<SpdySession>, 96 class NET_EXPORT SpdySession : public base::RefCounted<SpdySession>,
53 public BufferedSpdyFramerVisitorInterface { 97 public BufferedSpdyFramerVisitorInterface {
54 public: 98 public:
55 // Create a new SpdySession. 99 // Create a new SpdySession.
56 // |host_port_proxy_pair| is the host/port that this session connects to, and 100 // |host_port_proxy_pair| is the host/port that this session connects to, and
57 // the proxy configuration settings that it's using. 101 // the proxy configuration settings that it's using.
58 // |spdy_session_pool| is the SpdySessionPool that owns us. Its lifetime must 102 // |spdy_session_pool| is the SpdySessionPool that owns us. Its lifetime must
59 // strictly be greater than |this|. 103 // strictly be greater than |this|.
60 // |session| is the HttpNetworkSession. |net_log| is the NetLog that we log 104 // |session| is the HttpNetworkSession. |net_log| is the NetLog that we log
61 // network events to. 105 // network events to.
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 scoped_refptr<SpdyStream> GetActivePushStream(const std::string& url); 454 scoped_refptr<SpdyStream> GetActivePushStream(const std::string& url);
411 455
412 // Calls OnResponseReceived(). 456 // Calls OnResponseReceived().
413 // Returns true if successful. 457 // Returns true if successful.
414 bool Respond(const SpdyHeaderBlock& headers, 458 bool Respond(const SpdyHeaderBlock& headers,
415 const scoped_refptr<SpdyStream> stream); 459 const scoped_refptr<SpdyStream> stream);
416 460
417 461
418 void RecordPingRTTHistogram(base::TimeDelta duration); 462 void RecordPingRTTHistogram(base::TimeDelta duration);
419 void RecordHistograms(); 463 void RecordHistograms();
464 void RecordProtocolErrorHistogram(SpdyProtocolErrorDetails details);
420 465
421 // Closes all streams. Used as part of shutdown. 466 // Closes all streams. Used as part of shutdown.
422 void CloseAllStreams(net::Error status); 467 void CloseAllStreams(net::Error status);
423 468
424 // Invokes a user callback for stream creation. We provide this method so it 469 // Invokes a user callback for stream creation. We provide this method so it
425 // can be deferred to the MessageLoop, so we avoid re-entrancy problems. 470 // can be deferred to the MessageLoop, so we avoid re-entrancy problems.
426 void InvokeUserStreamCreationCallback(scoped_refptr<SpdyStream>* stream); 471 void InvokeUserStreamCreationCallback(scoped_refptr<SpdyStream>* stream);
427 472
428 // BufferedSpdyFramerVisitorInterface: 473 // BufferedSpdyFramerVisitorInterface:
429 virtual void OnError(SpdyFramer::SpdyError error_code) OVERRIDE; 474 virtual void OnError(SpdyFramer::SpdyError error_code) OVERRIDE;
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 743
699 const int status_; 744 const int status_;
700 const std::string description_; 745 const std::string description_;
701 746
702 DISALLOW_COPY_AND_ASSIGN(NetLogSpdySessionCloseParameter); 747 DISALLOW_COPY_AND_ASSIGN(NetLogSpdySessionCloseParameter);
703 }; 748 };
704 749
705 } // namespace net 750 } // namespace net
706 751
707 #endif // NET_SPDY_SPDY_SESSION_H_ 752 #endif // NET_SPDY_SPDY_SESSION_H_
OLDNEW
« no previous file with comments | « no previous file | net/spdy/spdy_session.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698