aboutsummaryrefslogtreecommitdiffstats
path: root/doc/publican/Server.xml
diff options
context:
space:
mode:
authorSebastian Wick <sebastian.wick@redhat.com>2025-10-28 00:36:53 +0100
committerPekka Paalanen <pq@iki.fi>2025-11-27 17:39:11 +0200
commitbbb5fa66a7fe53c492e4cc2e616c4ada38712542 (patch)
treec2e10fe75e0f9f4e1e2c9ac5a375e5de97d6cb36 /doc/publican/Server.xml
parentbuild: Bump to meson version 0.64.0 (diff)
downloadwayland-bbb5fa66a7fe53c492e4cc2e616c4ada38712542.tar
wayland-bbb5fa66a7fe53c492e4cc2e616c4ada38712542.tar.gz
wayland-bbb5fa66a7fe53c492e4cc2e616c4ada38712542.tar.bz2
wayland-bbb5fa66a7fe53c492e4cc2e616c4ada38712542.tar.lz
wayland-bbb5fa66a7fe53c492e4cc2e616c4ada38712542.tar.xz
wayland-bbb5fa66a7fe53c492e4cc2e616c4ada38712542.tar.zst
wayland-bbb5fa66a7fe53c492e4cc2e616c4ada38712542.zip
doc: Refactor the build system for complete build dir docs
By structuring things differently, it becomes possible to have a complete build of the docs in the build dir, without having to install anything. Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
Diffstat (limited to 'doc/publican/Server.xml')
-rw-r--r--doc/publican/Server.xml49
1 files changed, 49 insertions, 0 deletions
diff --git a/doc/publican/Server.xml b/doc/publican/Server.xml
new file mode 100644
index 0000000..2333b1a
--- /dev/null
+++ b/doc/publican/Server.xml
@@ -0,0 +1,49 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+ <!ENTITY % BOOK_ENTITIES SYSTEM "Wayland.ent">
+ <!ENTITY doxygen SYSTEM "ServerAPI.xml">
+%BOOK_ENTITIES;
+]>
+<appendix id="sect-Library-Server">
+ <title>Server API</title>
+ <section><title>Introduction</title>
+ <para>
+ The open-source reference implementation of Wayland protocol is
+ split in two C libraries, <link
+ linkend="sect-Library-Client">libwayland-client</link> and
+ libwayland-server. Their main responsibility is to handle the
+ Inter-process communication (<emphasis>IPC</emphasis>) with each
+ other, therefore guaranteeing the protocol objects marshaling and
+ messages synchronization.
+ </para>
+ <para>
+ The server library is designed to work much like libwayland-client,
+ although it is considerably complicated due to the server needing
+ to support multiple versions of the protocol. It is best to learn
+ libwayland-client first.
+ </para>
+ <para>
+ Each open socket to a client is represented by a <link
+ linkend="Server-structwl__client">wl_client</link>. The equivalent
+ of the <link linkend="Client-classwl__proxy">wl_proxy</link> that
+ libwayland-client uses to represent an object is <link
+ linkend="Server-structwl__resource">wl_resource</link> for
+ client-created objects, and <link
+ linkend="Server-structwl__global">wl_global</link> for objects
+ created by the server.
+ </para>
+ <para>
+ Often a server is also a client for another Wayland server, and
+ thus must link with both libwayland-client and libwayland-server.
+ This produces some type name conflicts (such as the <link
+ linkend="Client-classwl__display">client wl_display</link> and
+ <link linkend="Server-structwl__display">server wl_display</link>,
+ but the duplicate-but-not-the-same types are opaque, and accessed
+ only inside the correct library where it came from. Naturally that
+ means that the program writer needs to always know if a pointer to
+ a wl_display is for the server or client side and use the
+ corresponding functions.
+ </para>
+ </section>
+ &doxygen;
+</appendix>