1ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal/*
2ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * Copyright (C) 2016 The Android Open Source Project
3ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal *
4ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * Licensed under the Apache License, Version 2.0 (the "License");
5ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * you may not use this file except in compliance with the License.
6ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * You may obtain a copy of the License at
7ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal *
8ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal *      http://www.apache.org/licenses/LICENSE-2.0
9ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal *
10ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * Unless required by applicable law or agreed to in writing, software
11ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * distributed under the License is distributed on an "AS IS" BASIS,
12ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * See the License for the specific language governing permissions and
14ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal * limitations under the License.
15ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal */
16ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
17ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal#include <time.h>
18b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal#include <unistd.h>
19ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
20a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal#include "cutils/sockets.h"
21a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal
22ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal#include "wifilogd/raw_os.h"
23ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
24ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalnamespace android {
25ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalnamespace wifilogd {
26ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
27ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalRawOs::RawOs() {}
28ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalRawOs::~RawOs() {}
29ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
30ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal// All methods in RawOs should be thin wrappers over library/system calls.
31ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal// In particular, the methods in RawOs should not have any logic in them.
32ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal// Instead, all logic should be placed in Os, so that said logic can be tested.
33ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
34ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalint RawOs::ClockGettime(clockid_t clock_id, struct timespec* ts) const {
35ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal  return clock_gettime(clock_id, ts);
36ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal}
37ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
38a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawalint RawOs::GetControlSocket(const char* socket_name) {
39a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal  return android_get_control_socket(socket_name);
40a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal}
41a5bb08c1cf8a8d1ff097fa7a050d7787e9821c6amukesh agrawal
42960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawalint RawOs::Nanosleep(const struct timespec* req, struct timespec* rem) {
43960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawal  return nanosleep(req, rem);
44960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawal}
45960c8a88c83c55c21a3286628591a41d2fb42231mukesh agrawal
46d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawalssize_t RawOs::Recv(int sockfd, void* buf, size_t buflen, int flags) {
47d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal  return recv(sockfd, buf, buflen, flags);
48d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal}
49d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal
50b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawalssize_t RawOs::Write(int fd, const void* buf, size_t buflen) {
51b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal  return write(fd, buf, buflen);
52b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal}
53b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal
54ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal}  // namespace wifilogd
55ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal}  // namespace android
56