Github: add macOs action (#2)
* Create macos.yml * Fix macos.yml * remove anonymous namespace identifier * forgot one ... * fix macos build * add tests for macos.yml * macOS action trigger only on main or PR
This commit is contained in:
32
.github/workflows/macos.yml
vendored
Normal file
32
.github/workflows/macos.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
name: macOS
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches: main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
||||
runs-on: macos-latest
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-macOS
|
||||
cancel-in-progress: true
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: xmake-io/github-action-setup-xmake@v1
|
||||
with:
|
||||
xmake-version: branch@master
|
||||
|
||||
- name: Prepare XMake
|
||||
run: xmake f -p macosx -y
|
||||
|
||||
- name: Build
|
||||
run: xmake
|
||||
|
||||
- name: Test
|
||||
run: xmake test
|
||||
@@ -18,7 +18,7 @@ TCPListener::~TCPListener() {
|
||||
}
|
||||
|
||||
bool TCPListener::Listen(std::uint16_t port, int maxConnections) {
|
||||
if ((m_Handle = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
|
||||
if ((m_Handle = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
|
||||
utils::LOGE("Failed to create server socket !");
|
||||
return false;
|
||||
}
|
||||
@@ -26,19 +26,19 @@ bool TCPListener::Listen(std::uint16_t port, int maxConnections) {
|
||||
struct sockaddr_in address;
|
||||
address.sin_family = AF_INET;
|
||||
address.sin_addr.s_addr = INADDR_ANY;
|
||||
address.sin_port = ::htons(port);
|
||||
address.sin_port = htons(port);
|
||||
|
||||
if (::bind(m_Handle, reinterpret_cast<sockaddr*>(&address), sizeof(address)) < 0)
|
||||
if (bind(m_Handle, reinterpret_cast<sockaddr*>(&address), sizeof(address)) < 0)
|
||||
return false;
|
||||
|
||||
if (::listen(m_Handle, maxConnections) < 0)
|
||||
if (listen(m_Handle, maxConnections) < 0)
|
||||
return false;
|
||||
|
||||
socklen_t len = sizeof(address);
|
||||
if (::getsockname(m_Handle, reinterpret_cast<sockaddr*>(&address), &len) < 0)
|
||||
if (getsockname(m_Handle, reinterpret_cast<sockaddr*>(&address), &len) < 0)
|
||||
return false;
|
||||
|
||||
m_Port = ::ntohs(address.sin_port);
|
||||
m_Port = ntohs(address.sin_port);
|
||||
m_MaxConnections = maxConnections;
|
||||
|
||||
return true;
|
||||
@@ -48,7 +48,7 @@ bool TCPListener::Accept(TCPSocket& newSocket) {
|
||||
int addrlen = sizeof(newSocket.m_RemoteAddr);
|
||||
|
||||
newSocket.m_Handle =
|
||||
::accept(m_Handle, reinterpret_cast<sockaddr*>(&newSocket.m_RemoteAddr), reinterpret_cast<socklen_t*>(&addrlen));
|
||||
accept(m_Handle, reinterpret_cast<sockaddr*>(&newSocket.m_RemoteAddr), reinterpret_cast<socklen_t*>(&addrlen));
|
||||
|
||||
if (newSocket.m_Handle < 0)
|
||||
return false;
|
||||
@@ -60,11 +60,11 @@ bool TCPListener::Accept(TCPSocket& newSocket) {
|
||||
|
||||
void TCPListener::Destroy() {
|
||||
if (m_Handle < 0)
|
||||
::closesocket(m_Handle);
|
||||
closesocket(m_Handle);
|
||||
}
|
||||
|
||||
bool TCPListener::Close() {
|
||||
if (::shutdown(m_Handle, SD_BOTH) == 0)
|
||||
if (shutdown(m_Handle, SD_BOTH) == 0)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@@ -72,7 +72,7 @@ bool TCPListener::Close() {
|
||||
bool TCPListener::SetBlocking(bool blocking) {
|
||||
unsigned long mode = !blocking;
|
||||
|
||||
if (::ioctlsocket(m_Handle, FIONBIO, &mode) < 0)
|
||||
if (ioctlsocket(m_Handle, FIONBIO, &mode) < 0)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -78,12 +78,12 @@ bool TCPSocket::Connect(const std::string& host, unsigned short port) {
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
hints.ai_protocol = IPPROTO_TCP;
|
||||
|
||||
if (::getaddrinfo(host.c_str(), std::to_string(static_cast<int>(port)).c_str(), &hints, &result) != 0) {
|
||||
if (getaddrinfo(host.c_str(), std::to_string(static_cast<int>(port)).c_str(), &hints, &result) != 0) {
|
||||
utils::LOGE("Failed to get address info !");
|
||||
return false;
|
||||
}
|
||||
|
||||
m_Handle = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
m_Handle = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (m_Handle < 0) {
|
||||
utils::LOGE("Failed to create socket !");
|
||||
return false;
|
||||
@@ -92,7 +92,7 @@ bool TCPSocket::Connect(const std::string& host, unsigned short port) {
|
||||
struct addrinfo* ptr = nullptr;
|
||||
for (ptr = result; ptr != nullptr; ptr = ptr->ai_next) {
|
||||
struct sockaddr* sockaddr = ptr->ai_addr;
|
||||
if (::connect(m_Handle, sockaddr, sizeof(sockaddr_in)) != 0) {
|
||||
if (connect(m_Handle, sockaddr, sizeof(sockaddr_in)) != 0) {
|
||||
utils::LOGE("Failed to connect with this address !");
|
||||
continue;
|
||||
}
|
||||
@@ -120,7 +120,7 @@ size_t TCPSocket::Send(const unsigned char* data, size_t size) {
|
||||
std::size_t sent = 0;
|
||||
|
||||
while (sent < size) {
|
||||
int cur = ::send(m_Handle, reinterpret_cast<const char*>(data + sent), size - sent, 0);
|
||||
int cur = send(m_Handle, reinterpret_cast<const char*>(data + sent), size - sent, 0);
|
||||
if (cur <= 0) {
|
||||
Disconnect();
|
||||
return 0;
|
||||
@@ -135,7 +135,7 @@ std::size_t TCPSocket::Receive(DataBuffer& buffer, std::size_t amount) {
|
||||
buffer.Resize(amount);
|
||||
buffer.SetReadOffset(0);
|
||||
|
||||
int recvAmount = ::recv(m_Handle, reinterpret_cast<char*>(buffer.data()), amount, 0);
|
||||
int recvAmount = recv(m_Handle, reinterpret_cast<char*>(buffer.data()), amount, 0);
|
||||
if (recvAmount <= 0) {
|
||||
#if defined(_WIN32) || defined(WIN32)
|
||||
int err = WSAGetLastError();
|
||||
|
||||
Reference in New Issue
Block a user