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

FreeBSD Manual Pages

  
 
  

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

NAME
       suffix_attach_mem - creates SUFFIX protocol on top of underlying	socket

SYNOPSIS
	      #include <libdill.h>

	      int suffix_attach_mem(
		  int s,
		  const	void* suffix,
		  size_t suffixlen,
		  struct suffix_storage* mem);

DESCRIPTION
       SUFFIX  is  a message-based protocol that delimits messages by specific
       byte sequences.	For example, many protocols are	line-based, with indi-
       vidual messages separated by CR+LF sequence.

       This function instantiates SUFFIX protocol on  top  of  the  underlying
       protocol.

       This  function allows to	avoid one dynamic memory allocation by storing
       the object in user-supplied memory.  Unless  you	 are  hyper-optimizing
       use suffix_attach instead.

       s: Handle of the	underlying socket.  It must be a bytestream protocol.

       suffix: The delimiter byte sequence.

       suffixlen: The size of the delimiter, in	bytes.

       mem:  The  structure to store the newly created object in.  It must not
       be deallocated before the object	is closed.

       The socket can be cleanly shut down using suffix_detach function.

       This function is	not available  if  libdill  is	compiled  with	--dis-
       able-sockets option.

RETURN VALUE
       In  case	 of  success the function returns newly	created	socket handle.
       In case of error	it returns -1 and sets errno to	one of the values  be-
       low.

ERRORS
        EBADF:	Invalid	handle.

        EMFILE: The maximum number of file descriptors	in the process are al-
	 ready open.

        ENFILE:  The maximum number of	file descriptors in the	system are al-
	 ready open.

        ENOMEM: Not enough memory.

        ENOTSUP: The handle does not support this operation.

        EPROTO: Underlying socket is not a bytestream socket.

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

SEE ALSO
       hclose(3) mrecv(3) mrecvl(3) msend(3) msendl(3)	suffix_attach(3)  suf-
       fix_detach(3)

libdill							  SUFFIX_ATTACH_MEM(3)

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

home | help