50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
|  | #pragma once
 | ||
|  | #include <stdio.h>
 | ||
|  | #include <stdlib.h>
 | ||
|  | #include <string.h>
 | ||
|  | #include <sys/socket.h>
 | ||
|  | #include <netinet/in.h>
 | ||
|  | #include <arpa/inet.h>
 | ||
|  | #include <switch.h>
 | ||
|  | #include <stdarg.h>
 | ||
|  | #include <unistd.h>
 | ||
|  | #include <string>
 | ||
|  | #include <SDL.h>
 | ||
|  | #include <vector>
 | ||
|  | 
 | ||
|  | class RemoteLogger | ||
|  | { | ||
|  | public: | ||
|  |     RemoteLogger(const RemoteLogger &) = delete; | ||
|  |     RemoteLogger &operator=(const RemoteLogger &) = delete; | ||
|  |     RemoteLogger(RemoteLogger &&) = delete; | ||
|  |     RemoteLogger &operator=(RemoteLogger &&) = delete; | ||
|  |     // 全局访问点
 | ||
|  |     static RemoteLogger &GetInstance() | ||
|  |     { | ||
|  |         static RemoteLogger instance; // 局部静态变量,保证只初始化一次
 | ||
|  |         return instance; | ||
|  |     } | ||
|  |     // 安全格式化到字符串
 | ||
|  |     static std::string format_string(const char *format, va_list vl); | ||
|  | 
 | ||
|  | public: | ||
|  |     // 初始化函数,返回是否成功
 | ||
|  |     bool Init(const char *target_ip, unsigned short target_port); | ||
|  |     // 日志输出函数,支持格式化字符串
 | ||
|  |     void log(const char *format, ...); | ||
|  |     // 关闭连接
 | ||
|  |     void close(); | ||
|  |     // 检查是否已初始化
 | ||
|  |     bool isInitialized() const; | ||
|  | 
 | ||
|  | private: | ||
|  |     RemoteLogger(/* args */); | ||
|  |     ~RemoteLogger(); | ||
|  | 
 | ||
|  |     int sockfd = -1; | ||
|  |     struct sockaddr_in server_addr; | ||
|  |     socklen_t server_len; | ||
|  |     bool is_initialized = false; | ||
|  | }; |