• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2020 The Dawn Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include "dawn_wire/ChunkedCommandSerializer.h"
16 
17 namespace dawn_wire {
18 
ChunkedCommandSerializer(CommandSerializer * serializer)19     ChunkedCommandSerializer::ChunkedCommandSerializer(CommandSerializer* serializer)
20         : mSerializer(serializer), mMaxAllocationSize(serializer->GetMaximumAllocationSize()) {
21     }
22 
SerializeChunkedCommand(const char * allocatedBuffer,size_t remainingSize)23     void ChunkedCommandSerializer::SerializeChunkedCommand(const char* allocatedBuffer,
24                                                            size_t remainingSize) {
25         while (remainingSize > 0) {
26             size_t chunkSize = std::min(remainingSize, mMaxAllocationSize);
27             void* dst = mSerializer->GetCmdSpace(chunkSize);
28             if (dst == nullptr) {
29                 return;
30             }
31             memcpy(dst, allocatedBuffer, chunkSize);
32 
33             allocatedBuffer += chunkSize;
34             remainingSize -= chunkSize;
35         }
36     }
37 
38 }  // namespace dawn_wire
39