Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
PREFIX_DETACH(3)	    libdill Library Functions		PREFIX_DETACH(3)

NAME
     prefix_detach  -  terminates  PREFIX  protocol  and  returns the underlying
     socket

SYNOPSIS
	    #include <libdill.h>

	    int prefix_detach(
		int s,
		int64_t deadline);

DESCRIPTION
     PREFIX is a message-based protocol to  send  binary  messages  prefixed  by
     size.  The protocol has no initial handshake.  Terminal handshake is accom-
     plished by each peer sending size field filled by 0xff bytes.

     This  function does the terminal handshake and returns underlying socket to
     the user.	The socket is closed even in the case of error.

     s: Handle of the PREFIX socket.

     deadline: A point in time when the operation should time out, in  millisec-
     onds.  Use the now function to get your current point in time.  0 means im-
     mediate  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.

     This  function is not available if libdill is compiled with --disable-sock-
     ets option.

RETURN VALUE
     In case of success the function returns underlying socket handle.	In  case
     of error it returns -1 and sets errno to one of the values below.

ERRORS
     * EBADF: Invalid handle.

     * ECANCELED: Current coroutine was canceled.

     * ECONNRESET: Broken connection.

     * ENOTSUP: The handle is not a PREFIX protocol handle.

     * ETIMEDOUT: Deadline was reached.

EXAMPLE
	    int s = tcp_connect(&addr, -1);
	    s = prefix_attach(s, 2, 0);
	    msend(s, "ABC", 3, -1);
	    char buf[256];
	    ssize_t sz = mrecv(s, buf, sizeof(buf), -1);
	    s = prefix_detach(s, -1);
	    tcp_close(s);

SEE ALSO
     mrecv(3)  mrecvl(3)  msend(3)  msendl(3) now(3) prefix_attach(3) prefix_at-
     tach_mem(3)

libdill 							PREFIX_DETACH(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=prefix_detach&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help