## AtkSocket AtkSocket — Container for AtkPlug objects from other processes |

## Synopsis

    struct              AtkSocket;
    AtkObject *         atk_socket_new                      (void);
    void                atk_socket_embed                    (AtkSocket *obj,
                                                             gchar *plug_id);
    gboolean            atk_socket_is_occupied              (AtkSocket *obj);

## Description

Together with AtkPlug, AtkSocket provides the ability to embed accessibles from one process into another in a fashion that is transparent to assistive technologies. AtkSocket works as the container of AtkPlug, embedding it using the method `atk_socket_embed()`. Any accessible contained in the AtkPlug will appear to the assistive technologies as being inside the application that created the AtkSocket.

The communication between a AtkSocket and a AtkPlug is done by the IPC layer of the accessibility framework, normally implemented by the D-Bus based implementation of AT-SPI (at-spi2). If that is the case, at-spi-atk2 is the responsible to implement the abstract methods `atk_plug_get_id()` and `atk_socket_embed()`, so an ATK implementor shouldn't reimplement them. The process that contains the AtkPlug is responsible to send the ID returned by `atk_plug_id()` to the process that contains the AtkSocket, so it could call the method `atk_socket_embed()` in order to embed it.

For the same reasons, an implementor doesn't need to implement `atk_object_get_n_accessible_children()` and `atk_object_ref_accessible_child()`. All the logic related to those functions will be implemented by the IPC layer.

## Details

### struct AtkSocket

    struct AtkSocket {
      AtkObject parent;
    };

### atk_socket_new ()

    AtkObject *         atk_socket_new                      (void);

### atk_socket_embed ()

    void                atk_socket_embed                    (AtkSocket *obj,
                                                             gchar *plug_id);

Embeds the children of an AtkPlug as the children of the AtkSocket. The plug may be in the same process or in a different process.

The class item used by this function should be filled in by the IPC layer (usually at-spi2-atk). The implementor of the AtkSocket should call this function and pass the id for the plug as returned by `atk_plug_get_id()`. It is the responsibility of the application to pass the plug id on to the process implementing the AtkSocket as needed.

`obj` : | an AtkSocket
`plug_id` : | the ID of an AtkPlug

Since 1.30

### atk_socket_is_occupied ()

    gboolean            atk_socket_is_occupied              (AtkSocket *obj);

Determines whether or not the socket has an embedded plug.

`obj` : | an AtkSocket
Returns : | TRUE if a plug is embedded in the socket

Since 1.30

## See Also

AtkPlug