Description

If this method is called, use an already activated socket.

This method allows a server to use an existing socket received from systemd or any similar system.

It will replace Efl.Net.Server.serve, thus if this is used, this method will return EALREADY.

@note The parameter 'address' given to this function is only used to validate the next socket available. It doesn't search for a socket with the given address. Thus the socket to be used is the next unused one : order matters if using multiple servers!

@note subclasses must validate the socket and return EINVAL prior to call the base class with Efl.Object.super. They must also emit "serving" when ready. For instance stream protocols may need to check for listening and if not, try to listen. Usually they will also query getsockname() and set Efl.Net.Server.address.

Errors:

- EALREADY: There already is a socket, either from previous Efl.Net.Server.Fd.socket_activate or Efl.Net.Server.serve. Usually represents a programming error.

- ENOENT: No sockets received from process manager (ie: systemd). Usually this is not a fatal error, just proceed by calling Efl.Net.Server.serve

- EINVAL: the socket received is not of the correct family, type or protocol. Usually this means a configuration mismatch between the order of server creation and calls to socket_activate. The systemd.socket entries must match the order in your application.

Since 1.19

Signature

socket_activate {
    params {
        @in address: free(string, free);
    }
    return: Eina.Error;
}

C signature

Eina_Error efl_net_server_fd_socket_activate(Eo *obj, const char *address);

Parameters

  • address (in) - The address to validate the next available socket. It cannot be used to search, only for validation.

Implemented by

  • Efl.Net.Server.Fd.socket_activate