1* /* 2* * Copyright 2021 Google LLC 3* * 4* * Licensed under the Apache License, Version 2.0 (the "License"); 5* * you may not use this file except in compliance with the License. 6* * You may obtain a copy of the License at 7* * 8* * http://www.apache.org/licenses/LICENSE-2.0 9* * 10* * Unless required by applicable law or agreed to in writing, software 11* * distributed under the License is distributed on an "AS IS" BASIS, 12* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13* * See the License for the specific language governing permissions and 14* * limitations under the License. 15* */ 16* 17* #pragma once 18* 19* #include <sys/types.h> 20* 21* namespace net 22* { 23* 24* class SockIO 25* { 26* public: 27* SockIO() = default; 28* explicit SockIO(int sockfd) : sockfd_{sockfd} 29* {} 30* virtual ~SockIO(); 31* 32* int get_sockfd() const 33* { 34* return sockfd_; 35* } 36* 37* virtual int write(const void* buf, size_t len); 38* 39* virtual int close(); 40* 41* virtual int recv(void* buf, size_t maxlen); 42* 43* protected: 44* int sockfd_ = -1; 45* }; 46* 47* } // namespace net 48*