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
|