|  | // Copyright 2017 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include <wlan/mlme/timer.h> | 
|  |  | 
|  | #include <utility> | 
|  |  | 
|  | namespace wlan { | 
|  |  | 
|  | Timer::Timer(uint64_t id) : id_(id) {} | 
|  |  | 
|  | Timer::~Timer() {} | 
|  |  | 
|  | zx_status_t Timer::SetTimer(zx::time deadline) { | 
|  | deadline_ = deadline; | 
|  | return SetTimerImpl(deadline); | 
|  | } | 
|  |  | 
|  | zx_status_t Timer::CancelTimer() { | 
|  | deadline_ = zx::time(); | 
|  | return CancelTimerImpl(); | 
|  | } | 
|  |  | 
|  | SystemTimer::SystemTimer(uint64_t id, zx::timer timer) : Timer(id), timer_(std::move(timer)) {} | 
|  |  | 
|  | zx_status_t SystemTimer::SetTimerImpl(zx::time deadline) { | 
|  | if (!timer_) { return ZX_ERR_BAD_STATE; } | 
|  | return timer_.set(deadline, zx::nsec(0)); | 
|  | } | 
|  |  | 
|  | zx_status_t SystemTimer::CancelTimerImpl() { | 
|  | if (!timer_) { return ZX_ERR_BAD_STATE; } | 
|  | return timer_.cancel(); | 
|  | } | 
|  |  | 
|  | zx_status_t TestTimer::SetTimerImpl(zx::time duration) { | 
|  | return ZX_OK; | 
|  | } | 
|  |  | 
|  | zx_status_t TestTimer::CancelTimerImpl() { | 
|  | return ZX_OK; | 
|  | } | 
|  |  | 
|  | }  // namespace wlan |