summaryrefslogtreecommitdiffstats
path: root/raul/Socket.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-01-20 13:07:29 +0100
committerDavid Robillard <d@drobilla.net>2018-01-21 00:31:38 +0100
commit5eb7a555de2291f4df8c75ce261c555552725beb (patch)
tree38e075a0841e64996e7abeba1a36286a6c002c5f /raul/Socket.hpp
parent6a8f9d519bcce0f7b90d18af56458c4a6701a927 (diff)
downloadraul-5eb7a555de2291f4df8c75ce261c555552725beb.tar.gz
raul-5eb7a555de2291f4df8c75ce261c555552725beb.tar.bz2
raul-5eb7a555de2291f4df8c75ce261c555552725beb.zip
Remove URI class
Diffstat (limited to 'raul/Socket.hpp')
-rw-r--r--raul/Socket.hpp53
1 files changed, 27 insertions, 26 deletions
diff --git a/raul/Socket.hpp b/raul/Socket.hpp
index a569511..c42485f 100644
--- a/raul/Socket.hpp
+++ b/raul/Socket.hpp
@@ -18,6 +18,7 @@
#define RAUL_SOCKET_HPP
#include <memory>
+#include <string>
#include <errno.h>
#include <netdb.h>
@@ -31,7 +32,6 @@
#include <unistd.h>
#include "raul/Noncopyable.hpp"
-#include "raul/URI.hpp"
namespace Raul {
@@ -47,11 +47,11 @@ public:
explicit Socket(Type t);
/** Wrap an existing open socket. */
- Socket(Type t,
- const Raul::URI& uri,
- struct sockaddr* addr,
- socklen_t addr_len,
- int fd);
+ Socket(Type t,
+ const std::string& uri,
+ struct sockaddr* addr,
+ socklen_t addr_len,
+ int fd);
~Socket();
@@ -60,13 +60,13 @@ public:
* Use "*" as hostname to listen on all interfaces.
* @return True on success.
*/
- bool bind(const Raul::URI& uri);
+ bool bind(const std::string& uri);
/** Connect a client socket to a server address.
* @param uri Address URI, e.g. unix:///tmp/foo or tcp://somehost:1234
* @return True on success.
*/
- bool connect(const Raul::URI& uri);
+ bool connect(const std::string& uri);
/** Mark server socket as passive to listen for incoming connections.
* @return True on success.
@@ -81,7 +81,7 @@ public:
/** Return the file descriptor for the socket. */
int fd() { return _sock; }
- const Raul::URI& uri() const { return _uri; }
+ const std::string& uri() const { return _uri; }
/** Close the socket. */
void close();
@@ -93,9 +93,9 @@ public:
void shutdown();
private:
- bool set_addr(const Raul::URI& uri);
+ bool set_addr(const std::string& uri);
- Raul::URI _uri;
+ std::string _uri;
struct sockaddr* _addr;
socklen_t _addr_len;
Type _type;
@@ -125,16 +125,16 @@ Socket::Socket(Type t)
}
inline
-Socket::Socket(Type t,
- const Raul::URI& uri,
- struct sockaddr* addr,
- socklen_t addr_len,
- int fd)
- : _uri(uri)
- , _addr(addr)
- , _addr_len(addr_len)
- , _type(t)
- , _sock(fd)
+Socket::Socket(Type t,
+ const std::string& uri,
+ struct sockaddr* addr,
+ socklen_t addr_len,
+ int fd)
+ : _uri(uri)
+ , _addr(addr)
+ , _addr_len(addr_len)
+ , _type(t)
+ , _sock(fd)
{
}
@@ -146,7 +146,7 @@ Socket::~Socket()
}
inline bool
-Socket::set_addr(const Raul::URI& uri)
+Socket::set_addr(const std::string& uri)
{
free(_addr);
if (_type == Type::UNIX && uri.substr(0, strlen("unix://")) == "unix://") {
@@ -189,7 +189,7 @@ Socket::set_addr(const Raul::URI& uri)
}
inline bool
-Socket::bind(const Raul::URI& uri)
+Socket::bind(const std::string& uri)
{
if (set_addr(uri) && ::bind(_sock, _addr, _addr_len) != -1) {
return true;
@@ -199,7 +199,7 @@ Socket::bind(const Raul::URI& uri)
}
inline bool
-Socket::connect(const Raul::URI& uri)
+Socket::connect(const std::string& uri)
{
if (set_addr(uri) && ::connect(_sock, _addr, _addr_len) != -1) {
return true;
@@ -230,13 +230,14 @@ Socket::accept()
return std::shared_ptr<Socket>();
}
- Raul::URI client_uri = _uri;
+ std::string client_uri = _uri;
if (_type != Type::UNIX) {
char host[NI_MAXHOST];
char serv[NI_MAXSERV];
if (!getnameinfo(client_addr, client_addr_len,
host, sizeof(host), serv, sizeof(serv), 0)) {
- client_uri = Raul::URI(_uri.scheme() + "://" + host + ":" + serv);
+ const std::string scheme = _uri.substr(0, _uri.find(':'));
+ client_uri = std::string(scheme + "://" + host + ":" + serv);
}
}