| 242 | } |
| 243 | |
| 244 | void GraphData::Serialize(Writer & writer) |
| 245 | { |
| 246 | auto const startOffset = writer.Pos(); |
| 247 | Serializer<Writer> serializer(writer); |
| 248 | FixedSizeSerializer<Writer> numberSerializer(writer); |
| 249 | m_header.Reset(); |
| 250 | numberSerializer(m_header); |
| 251 | |
| 252 | m_header.m_stopsOffset = base::checked_cast<uint32_t>(writer.Pos() - startOffset); |
| 253 | serializer(m_stops); |
| 254 | |
| 255 | m_header.m_gatesOffset = base::checked_cast<uint32_t>(writer.Pos() - startOffset); |
| 256 | serializer(m_gates); |
| 257 | |
| 258 | m_header.m_edgesOffset = base::checked_cast<uint32_t>(writer.Pos() - startOffset); |
| 259 | serializer(m_edges); |
| 260 | |
| 261 | m_header.m_transfersOffset = base::checked_cast<uint32_t>(writer.Pos() - startOffset); |
| 262 | serializer(m_transfers); |
| 263 | |
| 264 | m_header.m_linesOffset = base::checked_cast<uint32_t>(writer.Pos() - startOffset); |
| 265 | serializer(m_lines); |
| 266 | |
| 267 | m_header.m_shapesOffset = base::checked_cast<uint32_t>(writer.Pos() - startOffset); |
| 268 | serializer(m_shapes); |
| 269 | |
| 270 | m_header.m_networksOffset = base::checked_cast<uint32_t>(writer.Pos() - startOffset); |
| 271 | serializer(m_networks); |
| 272 | |
| 273 | m_header.m_endOffset = base::checked_cast<uint32_t>(writer.Pos() - startOffset); |
| 274 | |
| 275 | // Rewriting header info. |
| 276 | CHECK(m_header.IsValid(), (m_header)); |
| 277 | auto const endOffset = writer.Pos(); |
| 278 | writer.Seek(startOffset); |
| 279 | numberSerializer(m_header); |
| 280 | writer.Seek(endOffset); |
| 281 | |
| 282 | LOG(LINFO, (TRANSIT_FILE_TAG, "section is ready. Header:", m_header)); |
| 283 | } |
| 284 | |
| 285 | void GraphData::DeserializeAll(Reader & reader) |
| 286 | { |