File: xs_msg_init_data.3

package info (click to toggle)
libxs 1.2.0-1.1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 6,152 kB
  • ctags: 2,159
  • sloc: cpp: 16,233; sh: 10,244; ansic: 405; makefile: 358
file content (141 lines) | stat: -rw-r--r-- 4,111 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
'\" t
.\"     Title: xs_msg_init_data
.\"    Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
.\"      Date: 06/13/2012
.\"    Manual: Crossroads I/O Manual
.\"    Source: Crossroads I/O 1.2.0
.\"  Language: English
.\"
.TH "XS_MSG_INIT_DATA" "3" "06/13/2012" "Crossroads I/O 1\&.2\&.0" "Crossroads I/O Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
xs_msg_init_data \- initialise Crossroads message from a supplied buffer
.SH "SYNOPSIS"
.sp
\fBtypedef void (xs_free_fn) (void \fR\fB\fI*data\fR\fR\fB, void \fR\fB\fI*hint\fR\fR\fB);\fR
.sp
\fBint xs_msg_init_data (xs_msg_t \fR\fB\fI*msg\fR\fR\fB, void \fR\fB\fI*data\fR\fR\fB, size_t \fR\fB\fIsize\fR\fR\fB, xs_free_fn \fR\fB\fI*ffn\fR\fR\fB, void \fR\fB\fI*hint\fR\fR\fB);\fR
.SH "DESCRIPTION"
.sp
The \fIxs_msg_init_data()\fR function shall initialise the message object referenced by \fImsg\fR to represent the content referenced by the buffer located at address \fIdata\fR, \fIsize\fR bytes long\&. No copy of \fIdata\fR shall be performed and the library shall take ownership of the supplied buffer\&.
.sp
If provided, the deallocation function \fIffn\fR shall be called once the data buffer is no longer required by the library, with the \fIdata\fR and \fIhint\fR arguments supplied to \fIxs_msg_init_data()\fR\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBCaution\fR
.ps -1
.br
.sp
Never access \fIxs_msg_t\fR members directly, instead always use the \fIxs_msg\fR family of functions\&.
.sp .5v
.RE
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBCaution\fR
.ps -1
.br
.sp
The deallocation function \fIffn\fR needs to be thread\-safe, since it will be called from an arbitrary thread\&.
.sp .5v
.RE
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBCaution\fR
.ps -1
.br
.sp
The functions \fIxs_msg_init()\fR, \fIxs_msg_init_data()\fR and \fIxs_msg_init_size()\fR are mutually exclusive\&. Never initialize the same \fIxs_msg_t\fR twice\&.
.sp .5v
.RE
.SH "RETURN VALUE"
.sp
The \fIxs_msg_init_data()\fR function shall return zero if successful\&. Otherwise it shall return \-1 and set \fIerrno\fR to one of the values defined below\&.
.SH "ERRORS"
.PP
\fBENOMEM\fR
.RS 4
Insufficient storage space is available\&.
.RE
.SH "EXAMPLE"
.PP
\fBInitialising a message from a supplied buffer\fR. 
.sp
.if n \{\
.RS 4
.\}
.nf
void my_free (void *data, void *hint)
{
    free (data);
}

    /*  \&.\&.\&.  */

void *data = malloc (6);
assert (data);
memcpy (data, "ABCDEF", 6);
xs_msg_t msg;
rc = xs_msg_init_data (&msg, data, 6, my_free, NULL);
assert (rc == 0);
.fi
.if n \{\
.RE
.\}
.sp
.SH "SEE ALSO"
.sp
\fBxs_msg_init_size\fR(3) \fBxs_msg_init\fR(3) \fBxs_msg_close\fR(3) \fBxs_msg_data\fR(3) \fBxs_msg_size\fR(3) \fBxs\fR(7)
.SH "AUTHORS"
.sp
The Crossroads documentation was written by Martin Sustrik <\m[blue]\fBsustrik@250bpm\&.com\fR\m[]\&\s-2\u[1]\d\s+2> and Martin Lucina <\m[blue]\fBmartin@lucina\&.net\fR\m[]\&\s-2\u[2]\d\s+2>\&.
.SH "NOTES"
.IP " 1." 4
sustrik@250bpm.com
.RS 4
\%mailto:sustrik@250bpm.com
.RE
.IP " 2." 4
martin@lucina.net
.RS 4
\%mailto:martin@lucina.net
.RE