-
Notifications
You must be signed in to change notification settings - Fork 0
/
imgclient.c
84 lines (73 loc) · 2 KB
/
imgclient.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <clientLibrary.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int nstores = 0;
int nretrives = 0;
int ndeletes = 0;
int successes = 0;
int failures = 0;
size_t bytesStores = 0;
size_t bytesRetrives = 0;
int main() {
int fdinput = open("img.jpg", O_RDWR);
if (fdinput < 0)
perror("fopen");
struct stat st, stOut;
if (stat("img.jpg", &st) == -1)
perror("stat");
void* img = malloc(st.st_size);
int r;
SYSCALL(r, readn(fdinput, img, st.st_size), "read");
void* retrivedImg = NULL;
if (os_connect("ImgClient") == 0) {
nstores++;
if (os_store("img1.jpg", img, st.st_size) == -1) {
fprintf(stderr, "Error on os_store()");
failures++;
} else {
successes++;
bytesStores += st.st_size;
nretrives++;
if ((retrivedImg = os_retrive("img1.jpg")) == NULL) {
fprintf(stderr, "Error on os_retrive()");
failures++;
} else {
int fdoutput = open("imgOut.jpg", O_TRUNC | O_CREAT | O_RDWR | O_APPEND,
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
if (fdoutput < 0)
perror("fopen");
SYSCALL(r, writen(fdoutput, retrivedImg, st.st_size), "writen");
if (stat("imgOut.jpg", &stOut) == -1) {
perror("stat");
failures++;
} else {
successes++;
bytesRetrives += stOut.st_size;
ndeletes++;
if (os_delete("img1.jpg") == -1) {
perror("delete");
failures++;
} else {
successes++;
}
}
}
}
}
os_disconnect();
if (img)
free(img);
if (retrivedImg)
free(retrivedImg);
printf(
"---Client: %s\n---Stores: %d\n---Retrives: %d\n---Deletes: %"
"d\n---Successes: %d\n---Failures: %d\n---Stored "
"bytes: %zu\n---Retrived bytes: %zu\n\n",
"ImgClient", nstores, nretrives, ndeletes, successes, failures,
bytesStores, bytesRetrives);
fflush(stdout);
return 0;
}