Changed the recvAll return type from std::string to char pointer, and created a non-blocking version of the function
This commit is contained in:
16
client.cpp
16
client.cpp
@@ -16,7 +16,7 @@ address specified in the constructor, and will throw an exception if that fails.
|
||||
The exception thrown is an integer, that corresponds to the errno returned by the failing
|
||||
function. This enables a client to 'catch' the thrown exception, and print the corresponding
|
||||
error message using strerror().
|
||||
*/
|
||||
This function also sets a timeout of 100ms for UDP sockets. */
|
||||
|
||||
void Client::create_socket() {
|
||||
Sock::create_socket();
|
||||
@@ -24,6 +24,12 @@ void Client::create_socket() {
|
||||
if (this->sock_fd < 0) {
|
||||
throw (this->sock_fd * -1);
|
||||
}
|
||||
// if (protocol == ES_UDP) {
|
||||
// struct timeval tv;
|
||||
// tv.tv_sec = 0;
|
||||
// tv.tv_usec = 10000;
|
||||
// setsockopt(this->sock_fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));
|
||||
// }
|
||||
}
|
||||
|
||||
/* Sends given data to the peer socket. This method is overriden, because a TCP
|
||||
@@ -39,11 +45,17 @@ void Client::sendAll(std::string to_send) {
|
||||
/* Receives data from peer socket, and returns it. See above for better
|
||||
explanation of why this method is overriden. */
|
||||
|
||||
std::string Client::recvAll() {
|
||||
char* Client::recvAll() {
|
||||
this->other_socket = this->sock_fd;
|
||||
return Sock::recvAll();
|
||||
}
|
||||
|
||||
/* Same as function above, but calls Sock::recvAllNB() */
|
||||
char* Client::recvAllNB() {
|
||||
this->other_socket = this->sock_fd;
|
||||
return Sock::recvAllNB();
|
||||
}
|
||||
|
||||
/* Returns the type of socket based on the global constants set in sock.hpp */
|
||||
int Client::get_type() {
|
||||
return SOCK_CLIENT;
|
||||
|
@@ -21,7 +21,10 @@ public:
|
||||
|
||||
void sendAll(std::string to_send);
|
||||
|
||||
std::string recvAll();
|
||||
char* recvAll();
|
||||
|
||||
/* Non-blocking receive */
|
||||
char* recvAllNB();
|
||||
|
||||
/* Return the type of socket */
|
||||
int get_type() override;
|
||||
|
Reference in New Issue
Block a user