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
3// found in the LICENSE file.
4
5#ifndef CONTENT_PUBLIC_BROWSER_GLOBAL_REQUEST_ID_H_
6#define CONTENT_PUBLIC_BROWSER_GLOBAL_REQUEST_ID_H_
7
8namespace content {
9
10// Uniquely identifies a net::URLRequest.
11struct GlobalRequestID {
12  GlobalRequestID() : child_id(-1), request_id(-1) {
13  }
14
15  GlobalRequestID(int child_id, int request_id)
16      : child_id(child_id),
17        request_id(request_id) {
18  }
19
20  // The unique ID of the child process (different from OS's PID).
21  int child_id;
22
23  // The request ID (unique for the child).
24  int request_id;
25
26  bool operator<(const GlobalRequestID& other) const {
27    if (child_id == other.child_id)
28      return request_id < other.request_id;
29    return child_id < other.child_id;
30  }
31  bool operator==(const GlobalRequestID& other) const {
32    return child_id == other.child_id &&
33        request_id == other.request_id;
34  }
35  bool operator!=(const GlobalRequestID& other) const {
36    return child_id != other.child_id ||
37        request_id != other.request_id;
38  }
39};
40
41}  // namespace content
42
43#endif  // CONTENT_PUBLIC_BROWSER_GLOBAL_REQUEST_ID_H_
44