]> git.tdb.fi Git - libs/net.git/commitdiff
Decorate things which constitute the public API
authorMikko Rasa <tdb@tdb.fi>
Sat, 14 Jan 2023 22:30:50 +0000 (00:30 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sat, 14 Jan 2023 22:30:50 +0000 (00:30 +0200)
26 files changed:
source/http/client.h
source/http/formdata.h
source/http/header.h
source/http/message.h
source/http/request.h
source/http/response.h
source/http/server.h
source/http/status.h
source/http/utils.h
source/http/version.h
source/net/clientsocket.cpp
source/net/clientsocket.h
source/net/communicator.h
source/net/datagramsocket.h
source/net/inet.h
source/net/inet6.h
source/net/mspnet_api.h [new file with mode: 0644]
source/net/protocol.h
source/net/receiver.h
source/net/resolve.h
source/net/serversocket.h
source/net/sockaddr.h
source/net/socket.h
source/net/streamserversocket.h
source/net/streamsocket.h
source/net/unix.h

index cd53f61301c262417cf36a81f84a999dd5096e13..b1f097d8852a4517c501a7d996ee077a97e753fc 100644 (file)
@@ -5,6 +5,7 @@
 #include <string>
 #include <sigc++/signal.h>
 #include <msp/io/eventdispatcher.h>
+#include <msp/net/mspnet_api.h>
 #include <msp/net/resolve.h>
 #include <msp/net/streamsocket.h>
 
@@ -14,7 +15,7 @@ namespace Http {
 class Request;
 class Response;
 
-class Client
+class MSPNET_API Client
 {
 public:
        sigc::signal<void, const Response &> signal_response_complete;
index 32328910b92c55eab01ce8cc3f1e2108ca56d28c..cf78acd30b387b8e12913826478d4a5700fb1f3a 100644 (file)
@@ -3,13 +3,14 @@
 
 #include <map>
 #include <string>
+#include <msp/net/mspnet_api.h>
 
 namespace Msp {
 namespace Http {
 
 class Request;
 
-class FormData
+class MSPNET_API FormData
 {
 private:
        std::map<std::string, std::string> fields;
index 0c6324bc6e5d59c838a44d9bdda8b3aa19e3ecc8..1beb95f01f5327ff6ed40a0dc2ffde5cda35279d 100644 (file)
@@ -4,13 +4,14 @@
 #include <map>
 #include <string>
 #include <vector>
+#include <msp/net/mspnet_api.h>
 
 namespace Msp {
 namespace Http {
 
 class Message;
 
-struct Header
+struct MSPNET_API Header
 {
        enum Style
        {
index 7984372328fab20af5cb78b9327947a69235aadb..be2224d88af4480704bd1d610e3455d14ad6218b 100644 (file)
@@ -4,12 +4,13 @@
 #include <map>
 #include <string>
 #include <msp/core/variant.h>
+#include <msp/net/mspnet_api.h>
 #include "version.h"
 
 namespace Msp {
 namespace Http {
 
-class Message
+class MSPNET_API Message
 {
 protected:
        typedef std::map<std::string, std::string> HeaderMap;
index 979c7859727c1e5b009bedac806d915da0a6190b..11af9936c662d0e4af688b15cc3141bf0fa6e095 100644 (file)
@@ -2,12 +2,13 @@
 #define MSP_HTTP_REQUEST_H_
 
 #include <string>
+#include <msp/net/mspnet_api.h>
 #include "message.h"
 
 namespace Msp {
 namespace Http {
 
-class Request: public Message
+class MSPNET_API Request: public Message
 {
 private:
        std::string method;
index f7c6812c46c9be4472ab18fcd642a52568f44991..8644b7228a11b1b3ce5652c7998ec474a28109ba 100644 (file)
@@ -1,13 +1,14 @@
 #ifndef MSP_HTTP_RESPONSE_H_
 #define MSP_HTTP_RESPONSE_H_
 
+#include <msp/net/mspnet_api.h>
 #include "message.h"
 #include "status.h"
 
 namespace Msp {
 namespace Http {
 
-class Response: public Message
+class MSPNET_API Response: public Message
 {
 private:
        Status status;
index dd8b2c6c88589bd4b453b9fc48c7275fee277b9c..8665fa3c88f5c0777f25e11ce578f23d2a8d67ff 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_HTTP_SERVER_H_
 
 #include <msp/io/eventdispatcher.h>
+#include <msp/net/mspnet_api.h>
 #include <msp/net/streamserversocket.h>
 #include <msp/time/timedelta.h>
 
@@ -11,7 +12,7 @@ namespace Http {
 class Request;
 class Response;
 
-class Server
+class MSPNET_API Server
 {
 public:
        sigc::signal<void, const Request &, Response &> signal_request;
index 5e7d54b19fc994b7331dfbad7095e4e2adef463d..5f4656e26fc706b0cd972332178b8becc630808b 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_HTTPSERVER_STATUS_H_
 
 #include <ostream>
+#include <msp/net/mspnet_api.h>
 
 namespace Msp {
 namespace Http {
@@ -20,7 +21,7 @@ enum Status
        NOT_IMPLEMENTED = 501
 };
 
-extern std::ostream &operator<<(std::ostream &, Status);
+MSPNET_API std::ostream &operator<<(std::ostream &, Status);
 
 } // namespace Http
 } // namespace Msp
index a25a748a6aa7464409c20fb1c67702b9b3e367a1..2920d2d7ea5e86885d61f952af8d768c4d3534f2 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <map>
 #include <string>
+#include <msp/net/mspnet_api.h>
 
 namespace Msp {
 namespace Http {
@@ -25,13 +26,13 @@ struct Url
 
 typedef std::map<std::string, std::string> Query;
 
-std::string urlencode(const std::string &, EncodeLevel =SAFE);
-std::string urlencode_plus(const std::string &, EncodeLevel =SAFE);
-std::string urldecode(const std::string &);
-Url parse_url(const std::string &);
-std::string build_url(const Url &);
-Query parse_query(const std::string &);
-std::string build_query(const Query &);
+MSPNET_API std::string urlencode(const std::string &, EncodeLevel =SAFE);
+MSPNET_API std::string urlencode_plus(const std::string &, EncodeLevel =SAFE);
+MSPNET_API std::string urldecode(const std::string &);
+MSPNET_API Url parse_url(const std::string &);
+MSPNET_API std::string build_url(const Url &);
+MSPNET_API Query parse_query(const std::string &);
+MSPNET_API std::string build_query(const Query &);
 
 } // namespace Http
 } // namespace Msp
index 19a50b91097ea545de16deda5df671bfe989cd63..665e619ee4184b51277155f886d9bdea85b16fe2 100644 (file)
@@ -2,14 +2,15 @@
 #define MSP_HTTP_MISC_H_
 
 #include <string>
+#include <msp/net/mspnet_api.h>
 
 namespace Msp {
 namespace Http {
 
 typedef unsigned Version;
 
-Version parse_version(const std::string &);
-std::string version_str(Version);
+MSPNET_API Version parse_version(const std::string &);
+MSPNET_API std::string version_str(Version);
 
 } // namespace Http
 } // namespace Msp
index 7987f4b82bce50212ab23cbe1be573a71ef796d6..51a8dfa01b7913485397438ddcc3c24b5e9ae35b 100644 (file)
@@ -74,6 +74,7 @@ size_t ClientSocket::do_read(char *buf, size_t size)
        if(!connected)
                throw bad_socket_state("not connected");
 
+       // XXX This breaks level-triggered semantics on Windows
        if(size==0)
                return 0;
 
index c33ed93cbc77e8d7be0a293caa1933f78fdaf088..80d927a330c63847c8a9cdfe88643681dad75680 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_NET_CLIENTSOCKET_H_
 #define MSP_NET_CLIENTSOCKET_H_
 
+#include "mspnet_api.h"
 #include "socket.h"
 
 namespace Msp {
@@ -9,7 +10,7 @@ namespace Net {
 /**
 ClientSockets are used for sending and receiving data over the network.
 */
-class ClientSocket: public Socket
+class MSPNET_API ClientSocket: public Socket
 {
 public:
        /** Emitted when the socket finishes connecting. */
index b98f488ff3f63ef64016c6a22d23e4aaf188a93c..e9f646a59a62ba1f0796a36cf57f2d27454d849d 100644 (file)
@@ -4,6 +4,7 @@
 #include <msp/core/except.h>
 #include <msp/core/noncopyable.h>
 #include <sigc++/signal.h>
+#include "mspnet_api.h"
 #include "protocol.h"
 
 namespace Msp {
@@ -11,20 +12,20 @@ namespace Net {
 
 class StreamSocket;
 
-class sequence_error: public invalid_state
+class MSPNET_API sequence_error: public invalid_state
 {
 public:
        sequence_error(const std::string &w): invalid_state(w) { }
 };
 
-class incompatible_protocol: public std::runtime_error
+class MSPNET_API incompatible_protocol: public std::runtime_error
 {
 public:
        incompatible_protocol(const std::string &w): std::runtime_error(w) { }
 };
 
 
-class Communicator: public NonCopyable
+class MSPNET_API Communicator: public NonCopyable
 {
 public:
        sigc::signal<void> signal_handshake_done;
index e5ded78623223fd9ef2bfaf4894b71ca8f02c01a..a978b9f5742ff2d0a56751aada207d9916bea9c2 100644 (file)
@@ -2,11 +2,12 @@
 #define MSP_NET_DATAGRAMSOCKET_H_
 
 #include "clientsocket.h"
+#include "mspnet_api.h"
 
 namespace Msp {
 namespace Net {
 
-class DatagramSocket: public ClientSocket
+class MSPNET_API DatagramSocket: public ClientSocket
 {
 public:
        DatagramSocket(Family, int = 0);
index 517b111b42a71e386ca1c692293f1632733006f8..fb76d7e4d5edd29676d3158baa759c2922d733cf 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_NET_INET_H_
 #define MSP_NET_INET_H_
 
+#include "mspnet_api.h"
 #include "sockaddr.h"
 
 namespace Msp {
@@ -9,7 +10,7 @@ namespace Net {
 /**
 Address class for IPv4 sockets.
 */
-class InetAddr: public SockAddr
+class MSPNET_API InetAddr: public SockAddr
 {
 private:
        unsigned char addr[4] = { };
index d4455e5de360cb1642b18ba23d9403a9d039b5a8..38cba337e436309754c3d1e5d631b45038fcaa5f 100644 (file)
@@ -1,12 +1,13 @@
 #ifndef MSP_NET_INET6_H_
 #define MSP_NET_INET6_H_
 
+#include "mspnet_api.h"
 #include "sockaddr.h"
 
 namespace Msp {
 namespace Net {
 
-class Inet6Addr: public SockAddr
+class MSPNET_API Inet6Addr: public SockAddr
 {
 private:
        unsigned char addr[16] = { };
diff --git a/source/net/mspnet_api.h b/source/net/mspnet_api.h
new file mode 100644 (file)
index 0000000..eccdd41
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef MSP_NET_API_H_
+#define MSP_NET_API_H_
+
+#if defined(_WIN32)
+#if defined(MSPNET_BUILD)
+#define MSPNET_API __declspec(dllexport)
+#elif defined(MSPNET_IMPORT)
+#define MSPNET_API __declspec(dllimport)
+#else
+#define MSPNET_API
+#endif
+#elif defined(__GNUC__)
+#define MSPNET_API __attribute__((visibility("default")))
+#else
+#define MSPNET_API
+#endif
+
+#endif
index f040a69ef1293665b3f38c79387706c04bf75e05..8068d3275ca292eea2317e9847725f90a0be7524 100644 (file)
@@ -7,26 +7,27 @@
 #include <stdexcept>
 #include <vector>
 #include <msp/core/hash.h>
+#include "mspnet_api.h"
 #include "receiver.h"
 
 namespace Msp {
 namespace Net {
 
-class bad_packet: public std::runtime_error
+class MSPNET_API bad_packet: public std::runtime_error
 {
 public:
        bad_packet(const std::string &w): std::runtime_error(w) { }
 };
 
 
-class buffer_error: public std::runtime_error
+class MSPNET_API buffer_error: public std::runtime_error
 {
 public:
        buffer_error(const std::string &w): std::runtime_error(w) { }
 };
 
 
-class Protocol
+class MSPNET_API Protocol
 {
 private:
        template<typename T, std::uint8_t K>
index de7209e4fc765d9d8d6d1d558aebecb6d075309f..9af1bb7154af65a226d96836c43fe48d9bc18fa3 100644 (file)
@@ -1,10 +1,12 @@
 #ifndef MSP_NET_RECEIVER_H_
 #define MSP_NET_RECEIVER_H_
 
+#include "mspnet_api.h"
+
 namespace Msp {
 namespace Net {
 
-class ReceiverBase
+class MSPNET_API ReceiverBase
 {
 protected:
        ReceiverBase() = default;
index 212a7f0a47574068b1b7573acf973ef76cbbc5ca..3071b771f569aa57f196c41cc4f8f9520c715130 100644 (file)
@@ -9,6 +9,7 @@
 #include <msp/core/thread.h>
 #include <msp/io/eventdispatcher.h>
 #include <msp/io/pipe.h>
+#include "mspnet_api.h"
 #include "sockaddr.h"
 
 namespace Msp {
@@ -18,19 +19,19 @@ namespace Net {
 the loopback address will be used.  If host is "*", the wildcard address will
 be used.  If service is empty, a socket address with a null service will be
 returned.  With the IP families, these are not very useful. */
-SockAddr *resolve(const std::string &, const std::string &, Family = UNSPEC);
+MSPNET_API SockAddr *resolve(const std::string &, const std::string &, Family = UNSPEC);
 
 /** And overload of resolve() that takes host and service as a single string,
 separated by a colon.  If the host part contains colons, such as is the case
 with a numeric IPv6 address, it must be enclosed in brackets. */
-SockAddr *resolve(const std::string &, Family = UNSPEC);
+MSPNET_API SockAddr *resolve(const std::string &, Family = UNSPEC);
 
 
 /**
 An asynchronous name resolver.  Blocking calls are performed in a thread and
 completion is notified with one of the two signals.
 */
-class Resolver
+class MSPNET_API Resolver
 {
 private:
        struct Task
index 48ab9bab441172f62b3ba0f94c418bbfb034b9eb..8c082b3772f9dc44451d8bf84d281780bd817cfb 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_NET_SERVERSOCKET_H_
 #define MSP_NET_SERVERSOCKET_H_
 
+#include "mspnet_api.h"
 #include "socket.h"
 
 namespace Msp {
@@ -12,7 +13,7 @@ class ClientSocket;
 ServerSockets are used to receive incoming connections.  They cannot be used
 for sending and receiving data.
 */
-class ServerSocket: public Socket
+class MSPNET_API ServerSocket: public Socket
 {
 protected:
        ServerSocket(Family, int, int);
index 817de4da48fea6d5e5730584aab2fedc63f35b7f..931d4f4d6e5d50ea87f97620f609cbedc44def1d 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_NET_SOCKADDR_H_
 
 #include <string>
+#include "mspnet_api.h"
 
 namespace Msp {
 namespace Net {
@@ -15,7 +16,7 @@ enum Family
 };
 
 
-class SockAddr
+class MSPNET_API SockAddr
 {
 public:
        struct SysAddr;
index 3e3c2aef13c29dba52f1bbcb27aa1c3eea2ed75d..b89c175bda040d2e22b17ba3335cdefd225616bb 100644 (file)
@@ -5,19 +5,20 @@
 #include <msp/core/except.h>
 #include <msp/io/eventobject.h>
 #include <msp/io/handle.h>
+#include "mspnet_api.h"
 #include "sockaddr.h"
 
 namespace Msp {
 namespace Net {
 
-class bad_socket_state: public invalid_state
+class MSPNET_API bad_socket_state: public invalid_state
 {
 public:
        bad_socket_state(const std::string &w): invalid_state(w) { }
 };
 
 
-class Socket: public IO::EventObject
+class MSPNET_API Socket: public IO::EventObject
 {
 protected:
        enum SocketEvent
index bd2487de430e3bca5820497c5238b65d38db2a8b..bbe1c91ca56038efcbf31c2d1bfacd78c66213fc 100644 (file)
@@ -1,13 +1,14 @@
 #ifndef MSP_NET_STREAMSERVERSOCKET_H_
 #define MSP_NET_STREAMSERVERSOCKET_H_
 
+#include "mspnet_api.h"
 #include "serversocket.h"
 #include "streamsocket.h"
 
 namespace Msp {
 namespace Net {
 
-class StreamServerSocket: public ServerSocket
+class MSPNET_API StreamServerSocket: public ServerSocket
 {
 private:
        bool listening = false;
index 6f478d289985f0a553a9c9261ccf5ff02a14579a..84b347dbc07da8ed04217da249248a7ea329c28f 100644 (file)
@@ -2,11 +2,12 @@
 #define MSP_NET_STREAMSOCKET_H_
 
 #include "clientsocket.h"
+#include "mspnet_api.h"
 
 namespace Msp {
 namespace Net {
 
-class StreamSocket: public ClientSocket
+class MSPNET_API StreamSocket: public ClientSocket
 {
        friend class StreamServerSocket;
 
index a7431a9c17f99a03bbc14b5f482b671b40d491b4..86f1dddf1ea9647bc8a55b43b156658d67677510 100644 (file)
@@ -1,12 +1,13 @@
 #ifndef MSP_NET_UNIX_H_
 #define MSP_NET_UNIX_H_
 
+#include "mspnet_api.h"
 #include "sockaddr.h"
 
 namespace Msp {
 namespace Net {
 
-class UnixAddr: public SockAddr
+class MSPNET_API UnixAddr: public SockAddr
 {
 private:
        std::string path;