Progress
This commit is contained in:
+6
-6
@@ -1192,7 +1192,7 @@ static void process_event_for_write(TinyDFS *tdfs,
|
|||||||
tdfs->operations[opidx].num_hashes = num_hashes; // TODO: overflow
|
tdfs->operations[opidx].num_hashes = num_hashes; // TODO: overflow
|
||||||
tdfs->operations[opidx].hashes = sys_malloc(num_hashes * sizeof(SHA256));
|
tdfs->operations[opidx].hashes = sys_malloc(num_hashes * sizeof(SHA256));
|
||||||
if (tdfs->operations[opidx].hashes == NULL) {
|
if (tdfs->operations[opidx].hashes == NULL) {
|
||||||
// TODO
|
assert(0); // TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
tdfs->operations[opidx].uploads = NULL;
|
tdfs->operations[opidx].uploads = NULL;
|
||||||
@@ -1531,31 +1531,31 @@ static void process_event_for_write(TinyDFS *tdfs,
|
|||||||
|
|
||||||
// version
|
// version
|
||||||
if (!binary_read(&reader, NULL, sizeof(uint16_t))) {
|
if (!binary_read(&reader, NULL, sizeof(uint16_t))) {
|
||||||
// TODO
|
assert(0); // TODO
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t type;
|
uint16_t type;
|
||||||
if (!binary_read(&reader, &type, sizeof(uint16_t))) {
|
if (!binary_read(&reader, &type, sizeof(uint16_t))) {
|
||||||
// TODO
|
assert(0); // TODO
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// length
|
// length
|
||||||
if (!binary_read(&reader, NULL, sizeof(uint32_t))) {
|
if (!binary_read(&reader, NULL, sizeof(uint32_t))) {
|
||||||
// TODO
|
assert(0); // TODO
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SHA256 hash;
|
SHA256 hash;
|
||||||
if (!binary_read(&reader, &hash, sizeof(hash))) {
|
if (!binary_read(&reader, &hash, sizeof(hash))) {
|
||||||
// TODO
|
assert(0); // TODO
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that there is nothing else to read
|
// Check that there is nothing else to read
|
||||||
if (binary_read(&reader, NULL, 1)) {
|
if (binary_read(&reader, NULL, 1)) {
|
||||||
// TODO
|
assert(0); // TODO
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
-39
@@ -354,7 +354,7 @@ int spawn_simulated_process(char *args)
|
|||||||
|
|
||||||
current_process = NULL;
|
current_process = NULL;
|
||||||
if (num_polled < 0) {
|
if (num_polled < 0) {
|
||||||
// TODO
|
assert(0); // TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timeout < 0) {
|
if (timeout < 0) {
|
||||||
@@ -453,7 +453,7 @@ static void accept_queue_init(AcceptQueue *accept_queue, int size)
|
|||||||
accept_queue->size = size;
|
accept_queue->size = size;
|
||||||
accept_queue->items = malloc(size * sizeof(DescriptorHandle));
|
accept_queue->items = malloc(size * sizeof(DescriptorHandle));
|
||||||
if (accept_queue->items == NULL) {
|
if (accept_queue->items == NULL) {
|
||||||
// TODO
|
assert(0); // TODO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -512,7 +512,7 @@ static void data_queue_init(DataQueue *queue, int size)
|
|||||||
queue->size = size;
|
queue->size = size;
|
||||||
queue->data = malloc(size * sizeof(char));
|
queue->data = malloc(size * sizeof(char));
|
||||||
if (queue->data == NULL) {
|
if (queue->data == NULL) {
|
||||||
// TODO
|
assert(0); // TODO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -597,7 +597,7 @@ void update_simulation(void)
|
|||||||
switch (desc->type) {
|
switch (desc->type) {
|
||||||
|
|
||||||
case DESC_FILE:
|
case DESC_FILE:
|
||||||
// TODO: error
|
assert(0); // TODO: error
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DESC_SOCKET:
|
case DESC_SOCKET:
|
||||||
@@ -633,7 +633,7 @@ void update_simulation(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CONNECTION_FAILED:
|
case CONNECTION_FAILED:
|
||||||
// TODO
|
assert(0); // TODO
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1024,35 +1024,6 @@ int mock_getsockopt(SOCKET fd, int level, int optname, void *optval, socklen_t *
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mock_setsockopt(SOCKET fd, int level, int optname, void *optval, socklen_t optlen)
|
|
||||||
{
|
|
||||||
if (fd == INVALID_SOCKET || (int)fd < 0 || (int)fd >= MAX_DESCRIPTORS) {
|
|
||||||
SET_SOCKET_ERROR(SOCKET_ERROR_BADF); // Bad file descriptor
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int idx = (int) fd;
|
|
||||||
Descriptor *desc = ¤t_process->desc[idx];
|
|
||||||
if (desc->type == DESC_EMPTY) {
|
|
||||||
SET_SOCKET_ERROR(SOCKET_ERROR_BADF);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only support SOL_SOCKET level for now
|
|
||||||
if (level != SOL_SOCKET) {
|
|
||||||
SET_SOCKET_ERROR(SOCKET_ERROR_PROTOOPT); // Protocol not available
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Most socket options are ignored in simulation
|
|
||||||
// Just validate the call but don't actually apply settings
|
|
||||||
(void)optval;
|
|
||||||
(void)optlen;
|
|
||||||
(void)optname;
|
|
||||||
|
|
||||||
return 0; // Success (no-op)
|
|
||||||
}
|
|
||||||
|
|
||||||
int mock_recv(SOCKET fd, void *dst, int len, int flags)
|
int mock_recv(SOCKET fd, void *dst, int len, int flags)
|
||||||
{
|
{
|
||||||
if (fd == INVALID_SOCKET || (int)fd < 0 || (int)fd >= MAX_DESCRIPTORS) {
|
if (fd == INVALID_SOCKET || (int)fd < 0 || (int)fd >= MAX_DESCRIPTORS) {
|
||||||
@@ -1194,7 +1165,7 @@ static void close_desc(Descriptor *desc)
|
|||||||
switch (desc->type) {
|
switch (desc->type) {
|
||||||
|
|
||||||
case DESC_EMPTY:
|
case DESC_EMPTY:
|
||||||
// TODO
|
assert(0); // TODO
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DESC_FILE:
|
case DESC_FILE:
|
||||||
@@ -1214,7 +1185,6 @@ static void close_desc(Descriptor *desc)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case DESC_CONNECTION_SOCKET:
|
case DESC_CONNECTION_SOCKET:
|
||||||
data_queue_free(&desc->output_data);
|
|
||||||
switch (desc->connection_state) {
|
switch (desc->connection_state) {
|
||||||
|
|
||||||
case CONNECTION_DELAYED:
|
case CONNECTION_DELAYED:
|
||||||
@@ -1232,7 +1202,7 @@ static void close_desc(Descriptor *desc)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CONNECTION_ESTABLISHED:
|
case CONNECTION_ESTABLISHED:
|
||||||
// TODO
|
data_queue_free(&desc->output_data);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CONNECTION_FAILED:
|
case CONNECTION_FAILED:
|
||||||
@@ -1251,7 +1221,7 @@ static void close_desc(Descriptor *desc)
|
|||||||
int mock_closesocket(SOCKET fd)
|
int mock_closesocket(SOCKET fd)
|
||||||
{
|
{
|
||||||
if (fd == INVALID_SOCKET) {
|
if (fd == INVALID_SOCKET) {
|
||||||
// TODO
|
// TODO: set error
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
int idx = (int) fd;
|
int idx = (int) fd;
|
||||||
@@ -1260,7 +1230,7 @@ int mock_closesocket(SOCKET fd)
|
|||||||
if (desc->type != DESC_SOCKET &&
|
if (desc->type != DESC_SOCKET &&
|
||||||
desc->type != DESC_LISTEN_SOCKET &&
|
desc->type != DESC_LISTEN_SOCKET &&
|
||||||
desc->type != DESC_CONNECTION_SOCKET) {
|
desc->type != DESC_CONNECTION_SOCKET) {
|
||||||
// TODO
|
// TODO: set error
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ int mock_bind(SOCKET fd, void *addr, size_t addr_len);
|
|||||||
int mock_listen(SOCKET fd, int backlog);
|
int mock_listen(SOCKET fd, int backlog);
|
||||||
SOCKET mock_accept(SOCKET fd, void *addr, socklen_t *addr_len);
|
SOCKET mock_accept(SOCKET fd, void *addr, socklen_t *addr_len);
|
||||||
int mock_getsockopt(SOCKET fd, int level, int optname, void *optval, socklen_t *optlen);
|
int mock_getsockopt(SOCKET fd, int level, int optname, void *optval, socklen_t *optlen);
|
||||||
int mock_setsockopt(SOCKET fd, int level, int optname, void *optval, socklen_t optlen);
|
|
||||||
int mock_recv(SOCKET fd, void *dst, int len, int flags);
|
int mock_recv(SOCKET fd, void *dst, int len, int flags);
|
||||||
int mock_send(SOCKET fd, void *src, int len, int flags);
|
int mock_send(SOCKET fd, void *src, int len, int flags);
|
||||||
int mock_connect(SOCKET fd, void *addr, size_t addr_len);
|
int mock_connect(SOCKET fd, void *addr, size_t addr_len);
|
||||||
@@ -94,7 +93,6 @@ int mock_mkdir(char *path, mode_t mode);
|
|||||||
#define sys_listen mock_listen
|
#define sys_listen mock_listen
|
||||||
#define sys_accept mock_accept
|
#define sys_accept mock_accept
|
||||||
#define sys_getsockopt mock_getsockopt
|
#define sys_getsockopt mock_getsockopt
|
||||||
#define sys_setsockopt mock_setsockopt
|
|
||||||
#define sys_recv mock_recv
|
#define sys_recv mock_recv
|
||||||
#define sys_send mock_send
|
#define sys_send mock_send
|
||||||
#define sys_connect mock_connect
|
#define sys_connect mock_connect
|
||||||
@@ -141,7 +139,6 @@ int mock_mkdir(char *path, mode_t mode);
|
|||||||
#define sys_listen listen
|
#define sys_listen listen
|
||||||
#define sys_accept accept
|
#define sys_accept accept
|
||||||
#define sys_getsockopt getsockopt
|
#define sys_getsockopt getsockopt
|
||||||
#define sys_setsockopt setsockopt
|
|
||||||
#define sys_recv recv
|
#define sys_recv recv
|
||||||
#define sys_send send
|
#define sys_send send
|
||||||
#define sys_connect connect
|
#define sys_connect connect
|
||||||
|
|||||||
@@ -330,6 +330,10 @@ int tcp_connect(TCP *tcp, Address addr, int tag, ByteQueue **output)
|
|||||||
connecting = true;
|
connecting = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check that this tag wasn't already used
|
||||||
|
for (int i = 0; i < tcp->num_conns; i++)
|
||||||
|
assert(tcp->conns[i].tag != tag);
|
||||||
|
|
||||||
conn_init(&tcp->conns[conn_idx], fd, connecting);
|
conn_init(&tcp->conns[conn_idx], fd, connecting);
|
||||||
tcp->conns[conn_idx].tag = tag;
|
tcp->conns[conn_idx].tag = tag;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user