| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "net/server/web_socket_encoder.h" | 5 #include "net/server/web_socket_encoder.h" | 
| 6 | 6 | 
| 7 #include <vector> | 7 #include <vector> | 
| 8 | 8 | 
| 9 #include "base/logging.h" | 9 #include "base/logging.h" | 
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" | 
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 142                        int masking_key, | 142                        int masking_key, | 
| 143                        bool compressed, | 143                        bool compressed, | 
| 144                        std::string* output) { | 144                        std::string* output) { | 
| 145   std::vector<char> frame; | 145   std::vector<char> frame; | 
| 146   OpCode op_code = kOpCodeText; | 146   OpCode op_code = kOpCodeText; | 
| 147   size_t data_length = message.length(); | 147   size_t data_length = message.length(); | 
| 148 | 148 | 
| 149   int reserved1 = compressed ? kReserved1Bit : 0; | 149   int reserved1 = compressed ? kReserved1Bit : 0; | 
| 150   frame.push_back(kFinalBit | op_code | reserved1); | 150   frame.push_back(kFinalBit | op_code | reserved1); | 
| 151   char mask_key_bit = masking_key != 0 ? kMaskBit : 0; | 151   char mask_key_bit = masking_key != 0 ? kMaskBit : 0; | 
| 152   if (data_length <= kMaxSingleBytePayloadLength) | 152   if (data_length <= kMaxSingleBytePayloadLength) { | 
| 153     frame.push_back(data_length | mask_key_bit); | 153     frame.push_back(static_cast<char>(data_length) | mask_key_bit); | 
| 154   else if (data_length <= 0xFFFF) { | 154   } else if (data_length <= 0xFFFF) { | 
| 155     frame.push_back(kTwoBytePayloadLengthField | mask_key_bit); | 155     frame.push_back(kTwoBytePayloadLengthField | mask_key_bit); | 
| 156     frame.push_back((data_length & 0xFF00) >> 8); | 156     frame.push_back((data_length & 0xFF00) >> 8); | 
| 157     frame.push_back(data_length & 0xFF); | 157     frame.push_back(data_length & 0xFF); | 
| 158   } else { | 158   } else { | 
| 159     frame.push_back(kEightBytePayloadLengthField | mask_key_bit); | 159     frame.push_back(kEightBytePayloadLengthField | mask_key_bit); | 
| 160     char extended_payload_length[8]; | 160     char extended_payload_length[8]; | 
| 161     size_t remaining = data_length; | 161     size_t remaining = data_length; | 
| 162     // Fill the length into extended_payload_length in the network byte order. | 162     // Fill the length into extended_payload_length in the network byte order. | 
| 163     for (int i = 0; i < 8; ++i) { | 163     for (int i = 0; i < 8; ++i) { | 
| 164       extended_payload_length[7 - i] = remaining & 0xFF; | 164       extended_payload_length[7 - i] = remaining & 0xFF; | 
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 341     return false; | 341     return false; | 
| 342   scoped_refptr<IOBufferWithSize> buffer = | 342   scoped_refptr<IOBufferWithSize> buffer = | 
| 343       deflater_->GetOutput(deflater_->CurrentOutputSize()); | 343       deflater_->GetOutput(deflater_->CurrentOutputSize()); | 
| 344   if (!buffer.get()) | 344   if (!buffer.get()) | 
| 345     return false; | 345     return false; | 
| 346   *output = std::string(buffer->data(), buffer->size()); | 346   *output = std::string(buffer->data(), buffer->size()); | 
| 347   return true; | 347   return true; | 
| 348 } | 348 } | 
| 349 | 349 | 
| 350 }  // namespace net | 350 }  // namespace net | 
| OLD | NEW | 
|---|