]> git.sesse.net Git - cubemap/blobdiff - acceptor.h
Add suppor for raw (non-Metacube) inputs over HTTP. Only really useful for TS.
[cubemap] / acceptor.h
index 97672338a133b0006b9203a8e33903057dd0aa33..fe62c31396d119ea97addc6bdafae262fef8d452 100644 (file)
@@ -1,20 +1,38 @@
 #ifndef _ACCEPTOR_H
 #define _ACCEPTOR_H
 
+#include <netinet/in.h>
+
 #include "thread.h"
 
-int create_server_socket(int port);
+enum SocketType {
+       TCP_SOCKET,
+       UDP_SOCKET,
+};
+int create_server_socket(const sockaddr_in6 &addr, SocketType socket_type);
+
+class AcceptorProto;
+
+sockaddr_in6 create_any_address(int port);
+sockaddr_in6 extract_address_from_acceptor_proto(const AcceptorProto &proto);
 
 // A thread that accepts new connections on a given socket,
 // and hands them off to the server pool.
-class AcceptorThread : public Thread {
+class Acceptor : public Thread {
 public:
-       AcceptorThread(int server_sock);
+       Acceptor(int server_sock, const sockaddr_in6 &addr);
+
+       // Serialization/deserialization.
+       Acceptor(const AcceptorProto &serialized);
+       AcceptorProto serialize() const;
+
+       void close_socket();
 
 private:
        virtual void do_work();
 
        int server_sock;
+       sockaddr_in6 addr;
 };
 
 #endif  // !defined(_ACCEPTOR_H)