String.cpp 949 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <iostream>
  2. #include <unistd.h>
  3. #include <sys/socket.h>
  4. #include "String.h"
  5. #include "Types.h"
  6. String::String() : length(0) {
  7. data[0] = '\0';
  8. }
  9. String::operator const char*() const {
  10. return data;
  11. }
  12. String& String::append(char c) {
  13. if(length + 1 < LENGTH) {
  14. data[length++] = c;
  15. data[length] = '\0';
  16. }
  17. return *this;
  18. }
  19. String& String::append(const char* str) {
  20. for(uint i = 0; length + 1 < LENGTH && str[i] != '\0'; length++, i++) {
  21. data[length] = str[i];
  22. }
  23. data[length] = '\0';
  24. return *this;
  25. }
  26. bool String::receiveFromSocket(int socket) {
  27. ssize_t result = recv(socket, data, LENGTH, MSG_DONTWAIT);
  28. if(result == -1) {
  29. perror("cannot receive from socket");
  30. return true;
  31. } else if(result == 0) {
  32. return true;
  33. }
  34. data[result - 1] = '\0';
  35. length = result - 1;
  36. return false;
  37. }
  38. uint String::getLength() const {
  39. return length;
  40. }