---
layout: doc
title: sockets / socket_acquire
---
# socket_acquire

### NAME

    socket_acquire() - assume ownership of a socket

### SYNOPSIS

    #include <socket_err.h>

    int socket_acquire( int socket, string read_callback,
                        string write_callback,
                        string close_callback );

### DESCRIPTION

    socket_acquire()   is   called  to  complete  the  handshake  begun  by
    socket_release() for transferring ownership (and control) of  a  socket
    to  a new object.  socket_release() calls the release callback function
    within the new owner object to notify the object that it wishes to pass
    control  of  the  socket on.  It is the responsibility of the new owner
    socket to decide whether it wishes to accept the socket.  It  it  does,
    then socket_acquire() is called to complete the transfer.  If not, then
    the callback simply returns without completing the handshake.

    In the former case the  handshake  is  completed  and  the  new  object
    becomes  the socket owner.  The read, write and close callback function
    parameters refer to functions within the new object.  These are  speci‐
    fied  so that the MudOS driver will know which functions to call within
    the  new  object.   Decling  to   acquire   the   socket   will   cause
    socket_release()  to  return  EESOCKNOTRLSD  so  the  owner can perform
    appropriate clean-up.

    socket_acquire() may only be called within the context of  thr  release
    callback function and only with the socket specified.

### SEE ALSO

    socket_release(3)

