1*3f982cf4SFabien Sanglard // Copyright 2019 The Chromium Authors. All rights reserved. 2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be 3*3f982cf4SFabien Sanglard // found in the LICENSE file. 4*3f982cf4SFabien Sanglard 5*3f982cf4SFabien Sanglard #include "osp/public/endpoint_request_ids.h" 6*3f982cf4SFabien Sanglard 7*3f982cf4SFabien Sanglard namespace openscreen { 8*3f982cf4SFabien Sanglard namespace osp { 9*3f982cf4SFabien Sanglard EndpointRequestIds(Role role)10*3f982cf4SFabien SanglardEndpointRequestIds::EndpointRequestIds(Role role) : role_(role) {} 11*3f982cf4SFabien Sanglard EndpointRequestIds::~EndpointRequestIds() = default; 12*3f982cf4SFabien Sanglard GetNextRequestId(uint64_t endpoint_id)13*3f982cf4SFabien Sanglarduint64_t EndpointRequestIds::GetNextRequestId(uint64_t endpoint_id) { 14*3f982cf4SFabien Sanglard uint64_t& next_request_id = request_ids_by_endpoint_id_[endpoint_id]; 15*3f982cf4SFabien Sanglard uint64_t request_id = next_request_id + (role_ == Role::kServer); 16*3f982cf4SFabien Sanglard next_request_id += 2; 17*3f982cf4SFabien Sanglard return request_id; 18*3f982cf4SFabien Sanglard } 19*3f982cf4SFabien Sanglard ResetRequestId(uint64_t endpoint_id)20*3f982cf4SFabien Sanglardvoid EndpointRequestIds::ResetRequestId(uint64_t endpoint_id) { 21*3f982cf4SFabien Sanglard // TODO(crbug.com/openscreen/42): Consider using a timeout to drop the request 22*3f982cf4SFabien Sanglard // id counter, and/or possibly set the initial value as part of the handshake. 23*3f982cf4SFabien Sanglard request_ids_by_endpoint_id_.erase(endpoint_id); 24*3f982cf4SFabien Sanglard } 25*3f982cf4SFabien Sanglard Reset()26*3f982cf4SFabien Sanglardvoid EndpointRequestIds::Reset() { 27*3f982cf4SFabien Sanglard request_ids_by_endpoint_id_.clear(); 28*3f982cf4SFabien Sanglard } 29*3f982cf4SFabien Sanglard 30*3f982cf4SFabien Sanglard } // namespace osp 31*3f982cf4SFabien Sanglard } // namespace openscreen 32