added definitions for sending and receiving messages

This commit is contained in:
2025-11-24 19:11:09 +05:00
parent 0abee3f7df
commit 571fdd900f
18 changed files with 168 additions and 65 deletions

View File

@@ -3,7 +3,7 @@
str validateUsername_cstr(char username[USERNAME_SIZE_MAX+1], str* out_username_str){
// must end with 0
if(username[USERNAME_SIZE_MAX] != '\0'){
return STR("Username string doesn't end correctly");
return str_copy(STR("Username string doesn't end correctly"));
}
str u = str_from_cstr(username);
@@ -16,8 +16,13 @@ str validateUsername_cstr(char username[USERNAME_SIZE_MAX+1], str* out_username_
}
str validateUsername_str(str username){
if(username.size < USERNAME_SIZE_MIN){
return STR("Username length is too small");
if(username.size < USERNAME_SIZE_MIN || username.size > USERNAME_SIZE_MAX){
return str_from_cstr(
sprintf_malloc(
"username length (in bytes) must be >= %i and <= %i\n",
USERNAME_SIZE_MIN, USERNAME_SIZE_MAX
)
);
}
for(u32 i = 0; i < username.size; i++){
@@ -28,8 +33,8 @@ str validateUsername_str(str username){
c == '.' || c == '_' || c == '-')
continue;
return STR("Username contains restricted characters. "
"Allowed characters: latin, digits, ._-");
return str_copy(STR("Username contains restricted characters. "
"Allowed characters: latin, digits, ._-"));
}
return str_null;
@@ -88,9 +93,9 @@ Result(void) LoginRequest_tryConstruct(LoginRequest *ptr, PacketHeader* header,
_PacketHeader_construct(LoginRequest);
memset(ptr, 0, sizeof(*ptr));
str username_check_error = validateUsername_str(username);
if(username_check_error.data){
Return RESULT_ERROR(username_check_error.data, false);
str name_error_str = validateUsername_str(username);
if(name_error_str.data){
Return RESULT_ERROR(name_error_str.data, true);
}
memcpy(ptr->username, username.data, username.size);
@@ -117,9 +122,9 @@ Result(void) RegisterRequest_tryConstruct(RegisterRequest *ptr, PacketHeader* he
_PacketHeader_construct(RegisterRequest);
memset(ptr, 0, sizeof(*ptr));
str username_check_error = validateUsername_str(username);
if(username_check_error.data){
Return RESULT_ERROR(username_check_error.data, false);
str name_error_str = validateUsername_str(username);
if(name_error_str.data){
Return RESULT_ERROR(name_error_str.data, true);
}
memcpy(ptr->username, username.data, username.size);