raw_os.cpp revision d75fd9e9b73995a6303ae99977ab1baf9db9b42f
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
20ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal#include "wifilogd/raw_os.h"
21ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
22ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalnamespace android {
23ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalnamespace wifilogd {
24ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
25ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalRawOs::RawOs() {}
26ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalRawOs::~RawOs() {}
27ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
28ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal// All methods in RawOs should be thin wrappers over library/system calls.
29ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal// In particular, the methods in RawOs should not have any logic in them.
30ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal// Instead, all logic should be placed in Os, so that said logic can be tested.
31ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
32ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawalint RawOs::ClockGettime(clockid_t clock_id, struct timespec* ts) const {
33ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal  return clock_gettime(clock_id, ts);
34ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal}
35ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal
36d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawalssize_t RawOs::Recv(int sockfd, void* buf, size_t buflen, int flags) {
37d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal  return recv(sockfd, buf, buflen, flags);
38d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal}
39d75fd9e9b73995a6303ae99977ab1baf9db9b42fmukesh agrawal
40b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawalssize_t RawOs::Write(int fd, const void* buf, size_t buflen) {
41b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal  return write(fd, buf, buflen);
42b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal}
43b8f8f6ab38fe147fa7aed5cdd9f9ce0e5a3a2e2fmukesh agrawal
44ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal}  // namespace wifilogd
45ec533e0f59b7e88bac734d538f596ab095bc74camukesh agrawal}  // namespace android
46