+void AbstractSocket::GetFdInfo() {
+ int r;
+ struct ucred cred = {};
+ socklen_t len = sizeof(cred);
+
+ r = getsockopt(fd_, SOL_SOCKET, SO_PEERCRED, &cred, &len);
+ if (r < 0) {
+ LOG(ERROR) << "getsockopt has failed, errno: " << errno;
+ return;
+ }
+
+ pid_ = cred.pid;
+ uid_ = cred.uid;
+}
+
+void AbstractSocket::Disconnect() {
+ if (fd_ > 0)
+ close(fd_);
+
+ fd_ = -1;