X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=include%2Fatalk%2Fdsi.h;h=fb45a30e0563dd9135053291cf42e7bd946a6c12;hb=75fe310224dffb96868d7f2cb1ec9125a84f2a08;hp=91cee9ba1ef2b1b520a0ac14bad739fc2da11bc0;hpb=815d557e167e76015934397dffbfa869180dcdbc;p=netatalk.git diff --git a/include/atalk/dsi.h b/include/atalk/dsi.h index 91cee9ba..fb45a30e 100644 --- a/include/atalk/dsi.h +++ b/include/atalk/dsi.h @@ -56,19 +56,23 @@ struct dsi_block { typedef struct DSI { dsi_proto protocol; struct dsi_block header; - struct sockaddr_in server, client; - - sigset_t sigblockset, oldset; - int sigblocked; - struct itimerval timer, savetimer; + struct sockaddr_storage server, client; + struct itimerval timer; + + int in_write; /* in the middle of writing multiple packets, signal handlers + * can't write to the socket + */ + int msg_request; /* pending message to the client */ + int down_request; /* pending SIGUSR1 down in 5 mn */ + u_int32_t attn_quantum, datasize, server_quantum; u_int16_t serverID, clientID; char *status; u_int8_t commands[DSI_CMDSIZ], data[DSI_DATASIZ]; size_t statuslen; size_t datalen, cmdlen; - size_t read_count, write_count; + off_t read_count, write_count; int asleep; /* client won't reply AFP 0x7a ? */ /* inited = initialized?, child = a child?, noreply = send reply? */ char child, inited, noreply; @@ -87,7 +91,6 @@ typedef struct DSI { #endif /* buffer for OSX deadlock */ - int noblocking; char *buffer; char *start; char *eof; @@ -141,7 +144,7 @@ typedef struct DSI { extern DSI *dsi_init (const dsi_proto /*protocol*/, const char * /*program*/, const char * /*host*/, const char * /*address*/, - const int /*port*/, const int /*proxy*/, + const char * /*port*/, const int /*proxy*/, const u_int32_t /* server quantum */); extern void dsi_setstatus (DSI *, char *, const size_t); @@ -159,15 +162,17 @@ extern void dsi_getstatus (DSI *); extern void dsi_close (DSI *); extern void dsi_sleep (DSI *, const int ); -/* set, unset socket blocking mode */ -extern int dsi_block (DSI *, const int); - +#define DSI_NOWAIT 1 /* low-level stream commands -- in dsi_stream.c */ -extern size_t dsi_stream_write (DSI *, void *, const size_t, const int mode); +extern ssize_t dsi_stream_write (DSI *, void *, const size_t, const int mode); extern size_t dsi_stream_read (DSI *, void *, const size_t); extern int dsi_stream_send (DSI *, void *, size_t); extern int dsi_stream_receive (DSI *, void *, const size_t, size_t *); +#ifdef WITH_SENDFILE +extern ssize_t dsi_stream_read_file(DSI *, int, off_t off, const size_t len); +#endif + /* client writes -- dsi_write.c */ extern size_t dsi_writeinit (DSI *, void *, const size_t); extern size_t dsi_write (DSI *, void *, const size_t);