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

Side by Side Diff: net/quic/quic_protocol.h

Issue 1399893005: relnote: Inline all frames smaller than a pointer into QuicFrame. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Avoid_redundant_recvmmsg_104327020
Patch Set: Created 5 years, 2 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
« no previous file with comments | « net/quic/quic_packet_generator.cc ('k') | net/quic/quic_protocol.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_QUIC_QUIC_PROTOCOL_H_ 5 #ifndef NET_QUIC_QUIC_PROTOCOL_H_
6 #define NET_QUIC_QUIC_PROTOCOL_H_ 6 #define NET_QUIC_QUIC_PROTOCOL_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <limits> 10 #include <limits>
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 NEGOTIATION_IN_PROGRESS, 683 NEGOTIATION_IN_PROGRESS,
684 // This indicates this endpoint has received a packet from the peer with a 684 // This indicates this endpoint has received a packet from the peer with a
685 // version this endpoint supports. Version negotiation is complete, and the 685 // version this endpoint supports. Version negotiation is complete, and the
686 // version number will no longer be sent with future packets. 686 // version number will no longer be sent with future packets.
687 NEGOTIATED_VERSION 687 NEGOTIATED_VERSION
688 }; 688 };
689 689
690 typedef QuicPacketPublicHeader QuicVersionNegotiationPacket; 690 typedef QuicPacketPublicHeader QuicVersionNegotiationPacket;
691 691
692 // A padding frame contains no payload. 692 // A padding frame contains no payload.
693 struct NET_EXPORT_PRIVATE QuicPaddingFrame { 693 struct NET_EXPORT_PRIVATE QuicPaddingFrame {};
694 };
695 694
696 // A ping frame contains no payload, though it is retransmittable, 695 // A ping frame contains no payload, though it is retransmittable,
697 // and ACK'd just like other normal frames. 696 // and ACK'd just like other normal frames.
698 struct NET_EXPORT_PRIVATE QuicPingFrame { 697 struct NET_EXPORT_PRIVATE QuicPingFrame {};
699 };
700 698
701 // A path MTU discovery frame contains no payload and is serialized as a ping 699 // A path MTU discovery frame contains no payload and is serialized as a ping
702 // frame. 700 // frame.
703 struct NET_EXPORT_PRIVATE QuicMtuDiscoveryFrame {}; 701 struct NET_EXPORT_PRIVATE QuicMtuDiscoveryFrame {};
704 702
705 typedef scoped_ptr<char[]> UniqueStreamBuffer; 703 typedef scoped_ptr<char[]> UniqueStreamBuffer;
706 704
707 // Allocates memory of size |size| for a QUIC stream buffer. 705 // Allocates memory of size |size| for a QUIC stream buffer.
708 UniqueStreamBuffer NewStreamBuffer(size_t size); 706 UniqueStreamBuffer NewStreamBuffer(size_t size);
709 707
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 enum EncryptionLevel { 990 enum EncryptionLevel {
993 ENCRYPTION_NONE = 0, 991 ENCRYPTION_NONE = 0,
994 ENCRYPTION_INITIAL = 1, 992 ENCRYPTION_INITIAL = 1,
995 ENCRYPTION_FORWARD_SECURE = 2, 993 ENCRYPTION_FORWARD_SECURE = 2,
996 994
997 NUM_ENCRYPTION_LEVELS, 995 NUM_ENCRYPTION_LEVELS,
998 }; 996 };
999 997
1000 struct NET_EXPORT_PRIVATE QuicFrame { 998 struct NET_EXPORT_PRIVATE QuicFrame {
1001 QuicFrame(); 999 QuicFrame();
1002 explicit QuicFrame(QuicPaddingFrame* padding_frame); 1000 explicit QuicFrame(QuicPaddingFrame padding_frame);
1001 explicit QuicFrame(QuicMtuDiscoveryFrame frame);
1002 explicit QuicFrame(QuicPingFrame frame);
1003 explicit QuicFrame(QuicBlockedFrame frame);
1004
1003 explicit QuicFrame(QuicStreamFrame* stream_frame); 1005 explicit QuicFrame(QuicStreamFrame* stream_frame);
1004 explicit QuicFrame(QuicAckFrame* frame); 1006 explicit QuicFrame(QuicAckFrame* frame);
1005 explicit QuicFrame(QuicMtuDiscoveryFrame* frame);
1006
1007 explicit QuicFrame(QuicRstStreamFrame* frame); 1007 explicit QuicFrame(QuicRstStreamFrame* frame);
1008 explicit QuicFrame(QuicConnectionCloseFrame* frame); 1008 explicit QuicFrame(QuicConnectionCloseFrame* frame);
1009 explicit QuicFrame(QuicStopWaitingFrame* frame); 1009 explicit QuicFrame(QuicStopWaitingFrame* frame);
1010 explicit QuicFrame(QuicPingFrame* frame);
1011 explicit QuicFrame(QuicGoAwayFrame* frame); 1010 explicit QuicFrame(QuicGoAwayFrame* frame);
1012 explicit QuicFrame(QuicWindowUpdateFrame* frame); 1011 explicit QuicFrame(QuicWindowUpdateFrame* frame);
1013 explicit QuicFrame(QuicBlockedFrame* frame);
1014 1012
1015 NET_EXPORT_PRIVATE friend std::ostream& operator<<( 1013 NET_EXPORT_PRIVATE friend std::ostream& operator<<(
1016 std::ostream& os, const QuicFrame& frame); 1014 std::ostream& os, const QuicFrame& frame);
1017 1015
1018 QuicFrameType type; 1016 QuicFrameType type;
1019 union { 1017 union {
1020 QuicPaddingFrame* padding_frame; 1018 // Frames smaller than a pointer are inline.
1019 QuicPaddingFrame padding_frame;
1020 QuicMtuDiscoveryFrame mtu_discovery_frame;
1021 QuicPingFrame ping_frame;
1022 QuicBlockedFrame blocked_frame;
1023
1024 // Frames larger than a pointer.
1021 QuicStreamFrame* stream_frame; 1025 QuicStreamFrame* stream_frame;
1022 QuicAckFrame* ack_frame; 1026 QuicAckFrame* ack_frame;
1023 QuicMtuDiscoveryFrame* mtu_discovery_frame;
1024
1025 QuicStopWaitingFrame* stop_waiting_frame; 1027 QuicStopWaitingFrame* stop_waiting_frame;
1026
1027 QuicPingFrame* ping_frame;
1028 QuicRstStreamFrame* rst_stream_frame; 1028 QuicRstStreamFrame* rst_stream_frame;
1029 QuicConnectionCloseFrame* connection_close_frame; 1029 QuicConnectionCloseFrame* connection_close_frame;
1030 QuicGoAwayFrame* goaway_frame; 1030 QuicGoAwayFrame* goaway_frame;
1031 QuicWindowUpdateFrame* window_update_frame; 1031 QuicWindowUpdateFrame* window_update_frame;
1032 QuicBlockedFrame* blocked_frame;
1033 }; 1032 };
1034 }; 1033 };
1034 // QuicFrameType consumes 8 bytes with padding.
1035 static_assert(sizeof(QuicFrame) <= 16,
1036 "Frames larger than 8 bytes should be referenced by pointer.");
1035 1037
1036 typedef std::vector<QuicFrame> QuicFrames; 1038 typedef std::vector<QuicFrame> QuicFrames;
1037 1039
1038 struct NET_EXPORT_PRIVATE QuicFecData { 1040 struct NET_EXPORT_PRIVATE QuicFecData {
1039 QuicFecData(); 1041 QuicFecData();
1040 1042
1041 // The FEC group number is also the packet number of the first 1043 // The FEC group number is also the packet number of the first
1042 // FEC protected packet. The last protected packet's packet number will 1044 // FEC protected packet. The last protected packet's packet number will
1043 // be one less than the packet number of the FEC packet. 1045 // be one less than the packet number of the FEC packet.
1044 QuicFecGroupNumber fec_group; 1046 QuicFecGroupNumber fec_group;
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1213 : iov(iov), iov_count(iov_count), total_length(total_length) {} 1215 : iov(iov), iov_count(iov_count), total_length(total_length) {}
1214 1216
1215 const struct iovec* iov; 1217 const struct iovec* iov;
1216 const int iov_count; 1218 const int iov_count;
1217 const size_t total_length; 1219 const size_t total_length;
1218 }; 1220 };
1219 1221
1220 } // namespace net 1222 } // namespace net
1221 1223
1222 #endif // NET_QUIC_QUIC_PROTOCOL_H_ 1224 #endif // NET_QUIC_QUIC_PROTOCOL_H_
OLDNEW
« no previous file with comments | « net/quic/quic_packet_generator.cc ('k') | net/quic/quic_protocol.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698