libdill: Structured Concurrency for C


msend - sends a message


#include <libdill.h>

int msend(
    int s,
    const void* buf,
    size_t len,
    int64_t deadline);


This function sends a message to a socket. It is a blocking operation that unblocks only after entire message is sent. There is no such thing as partial send. If a problem, including timeout, occurs while sending the message error is returned to the user and the socket cannot be used for sending from that point on.

s: The socket to send the message to.

buf: Message to send.

len: Size of the message, in bytes.

deadline: A point in time when the operation should time out, in milliseconds. Use the now function to get your current point in time. 0 means immediate timeout, i.e., perform the operation if possible or return without blocking if not. -1 means no deadline, i.e., the call will block forever if the operation cannot be performed.


In case of success the function returns 0. In case of error it returns -1 and sets errno to one of the values below.



int rc = msend(s, "ABC", 3, -1);


mrecv(3) mrecvl(3) msendl(3) now(3)