| 225 | } |
| 226 | |
| 227 | void Tracer::Trace(EventType type, double timestamp, Slice filename, int64_t mtime, |
| 228 | int64_t offset, int64_t lookup_len, int64_t entry_len) { |
| 229 | |
| 230 | // Sanity checks for lookup_len / entry_len |
| 231 | if (type == EventType::HIT) { |
| 232 | DCHECK(lookup_len > 0 && entry_len > 0); |
| 233 | } else if (type == EventType::MISS) { |
| 234 | DCHECK(lookup_len > 0 && entry_len == -1); |
| 235 | } else if (type == EventType::STORE || type == EventType::STORE_FAILED || |
| 236 | type == EventType::STORE_FAILED_BUSY) { |
| 237 | DCHECK(lookup_len == -1 && entry_len > 0); |
| 238 | } else { |
| 239 | DCHECK(false) << "Unrecognized EventType"; |
| 240 | } |
| 241 | |
| 242 | string filename_str = |
| 243 | anonymize_trace_ ? AnonymizeFilename(filename) : filename.ToString(); |
| 244 | TraceEvent event(type, timestamp, filename_str, mtime, offset, entry_len, |
| 245 | lookup_len); |
| 246 | string json = TraceEventToJson(event); |
| 247 | logger_->Write(/*force_flush="*/false, /*timestamp=*/0, json.data(), json.size()); |
| 248 | } |
| 249 | |
| 250 | string Tracer::AnonymizeFilename(Slice filename) { |
| 251 | uint128 hash = util_hash::CityHash128(reinterpret_cast<const char*>(filename.data()), |
nothing calls this directly
no test coverage detected