diff options
author | xengineering <me@xengineering.eu> | 2022-12-04 14:04:06 +0100 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2023-01-08 18:43:01 +0100 |
commit | 271a8baaeb5cbd19047c50681d955c14115fc86f (patch) | |
tree | 95ee8dbf8bf6288d1da09d15f9a4d39a129c6360 | |
parent | 9e2a44364bfae9a226e02fe7ddad032b16a1318f (diff) | |
download | limox-271a8baaeb5cbd19047c50681d955c14115fc86f.tar limox-271a8baaeb5cbd19047c50681d955c14115fc86f.tar.zst limox-271a8baaeb5cbd19047c50681d955c14115fc86f.zip |
Connect on mouse click
With this commit the client starts the connection to the server as soon
as the user clicks into the application window. Disconnect or reading /
writing to the stream is not implemented.
-rw-r--r-- | gui.c | 5 | ||||
-rw-r--r-- | xmpp.c | 40 | ||||
-rw-r--r-- | xmpp.h | 2 |
3 files changed, 26 insertions, 21 deletions
@@ -31,6 +31,7 @@ void gui_run(void) { SDL_Renderer* renderer; SDL_Texture* texture; uint32_t* pixels; + int xmpp_fd = -1; // init SDL2 and create window SDL_Init(SDL_INIT_VIDEO); @@ -62,7 +63,9 @@ void gui_run(void) { quit = true; break; case SDL_MOUSEBUTTONDOWN: - xmpp_connect(); + if (xmpp_fd == -1) { + xmpp_fd = xmpp_connect(); + } break; } SDL_RenderClear(renderer); @@ -135,11 +135,11 @@ int xmpp_start_stream(int sock_fd, char *jid, char *domainpart) } /* - * Initialize the network connection to the XMPP server + * Initialize the network connection to the XMPP server and return socket fd * * TODO: Error handling is missing. */ -void xmpp_connect(void) +int xmpp_connect(void) { printf("net_init()\n"); @@ -155,36 +155,38 @@ void xmpp_connect(void) int sock = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol); if (sock == -1) { printf("Failed to get socket from OS!."); - return; + return sock; } else { printf("Got socket number %d from OS.\n", sock); } if (connect(sock, addr->ai_addr, addr->ai_addrlen) == -1) { printf("Failed to connect!\n"); - return; + return sock; } else { printf("Successfully connected.\n"); } if (xmpp_start_stream(sock, jid, domain) == -1) { printf("Failed to init stream!\n"); - return; + return sock; } printf("Stream init sent.\n"); - printf("This is the server response:\n"); - char buf; - while(1) { - int retval = recv(sock, (void *)&buf, 1, 0); - if (retval == 0) { - printf("Connection closed!\n"); - break; - } else if (retval == 1) { - write(1, (const void *)&buf, 1); - } else { - printf(strerror(errno)); - printf("Unhandled recv() return value %d!\n", retval); - } - } + return sock; + +// printf("This is the server response:\n"); +// char buf; +// while(1) { +// int retval = recv(sock, (void *)&buf, 1, 0); +// if (retval == 0) { +// printf("Connection closed!\n"); +// break; +// } else if (retval == 1) { +// write(1, (const void *)&buf, 1); +// } else { +// printf(strerror(errno)); +// printf("Unhandled recv() return value %d!\n", retval); +// } +// } } @@ -17,5 +17,5 @@ */ -void xmpp_connect(void); +int xmpp_connect(void); char *get_domainpart(char *jid); |