summaryrefslogtreecommitdiffstats
path: root/src/socket/Socket.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-08-14 04:23:23 +0000
committerDavid Robillard <d@drobilla.net>2012-08-14 04:23:23 +0000
commit80fee5c311fdbdeda573ec81f59158a5fc87d0a1 (patch)
tree8e7e5a6c9bda32bbe0ae8e8c9f6ab23e44c7c181 /src/socket/Socket.cpp
parent058eaf65642268047a984a5c80d54a1f62a85130 (diff)
downloadingen-80fee5c311fdbdeda573ec81f59158a5fc87d0a1.tar.gz
ingen-80fee5c311fdbdeda573ec81f59158a5fc87d0a1.tar.bz2
ingen-80fee5c311fdbdeda573ec81f59158a5fc87d0a1.zip
Update for latest Raul.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4687 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/socket/Socket.cpp')
-rw-r--r--src/socket/Socket.cpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/src/socket/Socket.cpp b/src/socket/Socket.cpp
index d6162df2..13a684bc 100644
--- a/src/socket/Socket.cpp
+++ b/src/socket/Socket.cpp
@@ -42,6 +42,7 @@ namespace Socket {
Socket::Socket(Type t)
: _type(t)
+ , _uri(t == UNIX ? "unix:" : "tcp:")
, _addr(NULL)
, _addr_len(0)
, _sock(-1)
@@ -56,11 +57,11 @@ Socket::Socket(Type t)
}
}
-Socket::Socket(Type t,
- const std::string& uri,
- struct sockaddr* addr,
- socklen_t addr_len,
- int fd)
+Socket::Socket(Type t,
+ const Raul::URI& uri,
+ struct sockaddr* addr,
+ socklen_t addr_len,
+ int fd)
: _type(t)
, _uri(uri)
, _addr(addr)
@@ -76,7 +77,7 @@ Socket::~Socket()
}
bool
-Socket::set_addr(const std::string& uri)
+Socket::set_addr(const Raul::URI& uri)
{
free(_addr);
if (_type == UNIX && uri.substr(0, strlen("unix://")) == "unix://") {
@@ -90,14 +91,14 @@ Socket::set_addr(const std::string& uri)
_addr_len = sizeof(struct sockaddr_un);
return true;
} else if (_type == TCP && uri.find("://") != std::string::npos) {
- const std::string no_scheme = uri.substr(uri.find("://") + 4);
- const size_t port_sep = no_scheme.find(':');
+ const std::string authority = uri.substr(uri.find("://") + 3);
+ const size_t port_sep = authority.find(':');
if (port_sep == std::string::npos) {
return false;
}
- const std::string host = no_scheme.substr(0, port_sep);
- const std::string port = no_scheme.substr(port_sep + 1).c_str();
+ const std::string host = authority.substr(0, port_sep);
+ const std::string port = authority.substr(port_sep + 1).c_str();
struct addrinfo* ainfo;
int st = 0;
@@ -118,7 +119,7 @@ Socket::set_addr(const std::string& uri)
}
bool
-Socket::bind(const std::string& uri)
+Socket::bind(const Raul::URI& uri)
{
if (set_addr(uri) && ::bind(_sock, _addr, _addr_len) != -1) {
return true;
@@ -130,7 +131,7 @@ Socket::bind(const std::string& uri)
}
bool
-Socket::connect(const std::string& uri)
+Socket::connect(const Raul::URI& uri)
{
if (set_addr(uri) && ::connect(_sock, _addr, _addr_len) != -1) {
return true;
@@ -167,11 +168,11 @@ Socket::accept()
return SharedPtr<Socket>();
}
- std::string client_uri = _uri;
- char host[NI_MAXHOST];
+ Raul::URI client_uri = _uri;
+ char host[NI_MAXHOST];
if (getnameinfo(client_addr, client_addr_len,
host, sizeof(host), NULL, 0, 0)) {
- client_uri = _uri.substr(0, _uri.find(":") + 1) + host;
+ client_uri = Raul::URI(_uri.scheme() + "://" + host);
}
return SharedPtr<Socket>(