#include #include #include #include #include #include #include #include "liburaid.h" #define PRINT_DEBUG #define SOCKET_PATH "/tmp/uraid" int uraid_socket; struct sockaddr_un uraid_socket_addr; /** * @brief Initializaes a connection to the URAID service * */ URAID_status_t URAID_Init(){ // Sets up socket details and the path of the socket memset(&uraid_socket_addr, 0, sizeof(struct sockaddr_un)); uraid_socket_addr.sun_family = AF_UNIX; strncpy(uraid_socket_addr.sun_path, SOCKET_PATH, sizeof(uraid_socket_addr.sun_path) - 1); // Create a UNIX socket uraid_socket = socket(AF_UNIX, SOCK_STREAM, 0); if (uraid_socket == -1) { #ifdef PRINT_DEBUG perror("Error creating socket"); #endif return URAID_STATUS_ERR; } // Connect to the socket if (connect(uraid_socket, (struct sockaddr *)&uraid_socket_addr, sizeof(struct sockaddr_un)) == -1) { #ifdef PRINT_DEBUG perror("Error connecting to server"); #endif return URAID_STATUS_ERR; } return URAID_STATUS_OK; } typedef struct RAID_Frame { int cmd; char filename[32]; size_t buffer_size; char buffer[2048]; } RAID_Frame; URAID_status_t URAID_Write(const char *label, const void *buffer, size_t size){ size_t label_size = strlen(label); // ========== Command ========== // Sends the command to the server RAID_Frame rf; rf.cmd = URAID_CMD_WRITE; strcpy(rf.filename,label); rf.buffer_size = size; memcpy(rf.buffer,buffer,size); if (write(uraid_socket, &rf, sizeof(RAID_Frame)) == -1) { #ifdef PRINT_DEBUG perror("Error writing command to server"); #endif return URAID_STATUS_ERR; } return URAID_STATUS_OK; } int main() { URAID_Init(); char msg[] = "Hello this is the library"; URAID_Write("file2",msg,strlen(msg)); // Close the client socket close(uraid_socket); return 0; }