Просмотр исходного кода

set connection string with one function call

OlehKulykov 10 лет назад
Родитель
Сommit
76f5a80a8e

+ 33 - 18
librws.h

@@ -159,6 +159,24 @@ typedef void (*rws_on_socket_recvd_bin)(rws_socket socket, const void * data, co
 RWS_API(rws_socket) rws_socket_create(void);
 
 
+/**
+ @brief Set socket connect URL.
+ @param socket Socket object.
+ @param scheme Connect URL scheme, "http" or "ws"
+ @param scheme Connect URL host, "echo.websocket.org"
+ @param scheme Connect URL port.
+ @param scheme Connect URL path started with '/' character, "/" - for empty, "/path"
+ @code
+ rws_socket_set_url(socket, "http", "echo.websocket.org", 80, "/");
+ rws_socket_set_url(socket, "ws", "echo.websocket.org", 80, "/");
+ @endcode
+ */
+RWS_API(void) rws_socket_set_url(rws_socket socket,
+								 const char * scheme,
+								 const char * host,
+								 const int port,
+								 const char * path);
+
 /**
  @brief Set socket connect URL scheme string.
  @param socket Socket object.
@@ -199,42 +217,42 @@ RWS_API(const char *) rws_socket_get_host(rws_socket socket);
 
 
 /**
- @brief Set socket connect URL path string.
+ @brief Set socket connect URL port.
  @param socket Socket object.
- @param scheme Connect URL path started with '/' character, "/" - for empty, "/path"
+ @param scheme Connect URL port.
  @code
- rws_socket_set_path(socket, "/"); // empty path
- rws_socket_set_path(socket, "/path"); // some path
+ rws_socket_set_port(socket, 80);
  @endcode
  */
-RWS_API(void) rws_socket_set_path(rws_socket socket, const char * path);
+RWS_API(void) rws_socket_set_port(rws_socket socket, const int port);
 
 
 /**
- @brief Get socket connect URL path string.
+ @brief Get socket connect URL port.
  @param socket Socket object.
- @return Connect URL path or null.
+ @return Connect URL port or 0.
  */
-RWS_API(const char *) rws_socket_get_path(rws_socket socket);
+RWS_API(int) rws_socket_get_port(rws_socket socket);
 
 
 /**
- @brief Set socket connect URL port.
+ @brief Set socket connect URL path string.
  @param socket Socket object.
- @param scheme Connect URL port.
+ @param scheme Connect URL path started with '/' character, "/" - for empty, "/path"
  @code
- rws_socket_set_port(socket, 80);
+ rws_socket_set_path(socket, "/"); // empty path
+ rws_socket_set_path(socket, "/path"); // some path
  @endcode
  */
-RWS_API(void) rws_socket_set_port(rws_socket socket, const int port);
+RWS_API(void) rws_socket_set_path(rws_socket socket, const char * path);
 
 
 /**
- @brief Get socket connect URL port.
+ @brief Get socket connect URL path string.
  @param socket Socket object.
- @return Connect URL port or 0.
+ @return Connect URL path or null.
  */
-RWS_API(int) rws_socket_get_port(rws_socket socket);
+RWS_API(const char *) rws_socket_get_path(rws_socket socket);
 
 
 /**
@@ -297,9 +315,6 @@ RWS_API(void) rws_socket_set_user_object(rws_socket socket, void * user_object);
 RWS_API(void *) rws_socket_get_user_object(rws_socket socket);
 
 
-/**
-
- */
 RWS_API(void) rws_socket_set_on_connected(rws_socket socket, rws_on_socket callback);
 
 

+ 23 - 6
src/socketpub.c

@@ -153,12 +153,29 @@ void rws_socket_delete(_rws_socket * s)
 	rws_free(s);
 }
 
+void rws_socket_set_url(rws_socket socket,
+						const char * scheme,
+						const char * host,
+						const int port,
+						const char * path)
+{
+	_rws_socket * s = (_rws_socket *)socket;
+	if (!s) return;
+	rws_string_delete(s->scheme);
+	s->scheme = rws_string_copy(scheme);
+	rws_string_delete(s->host);
+	s->host = rws_string_copy(host);
+	rws_string_delete(s->path);
+	s->path = rws_string_copy(path);
+	s->port = port;
+}
+
 void rws_socket_set_scheme(rws_socket socket, const char * scheme)
 {
 	_rws_socket * s = (_rws_socket *)socket;
 	if (!s) return;
-	rws_string_delete_clean(&s->scheme);
-	if (s) s->scheme = rws_string_copy(scheme);
+	rws_string_delete(s->scheme);
+	s->scheme = rws_string_copy(scheme);
 }
 
 const char * rws_socket_get_scheme(rws_socket socket)
@@ -171,8 +188,8 @@ void rws_socket_set_host(rws_socket socket, const char * host)
 {
 	_rws_socket * s = (_rws_socket *)socket;
 	if (!s) return;
-	rws_string_delete_clean(&s->host);
-	if (s) s->host = rws_string_copy(host);
+	rws_string_delete(s->host);
+	s->host = rws_string_copy(host);
 }
 
 const char * rws_socket_get_host(rws_socket socket)
@@ -185,8 +202,8 @@ void rws_socket_set_path(rws_socket socket, const char * path)
 {
 	_rws_socket * s = (_rws_socket *)socket;
 	if (!s) return;
-	rws_string_delete_clean(&s->path);
-	if (s) s->path = rws_string_copy(path);
+	rws_string_delete(s->path);
+	s->path = rws_string_copy(path);
 }
 
 const char * rws_socket_get_path(rws_socket socket)

BIN
test/librws_test.xcodeproj/project.xcworkspace/xcuserdata/residentevil.xcuserdatad/UserInterfaceState.xcuserstate