Line data Source code
1 : /*
2 : Copyright (c) 2007, Adobe Systems, Incorporated
3 : Copyright (c) 2013, Mozilla
4 :
5 : All rights reserved.
6 :
7 : Redistribution and use in source and binary forms, with or without
8 : modification, are permitted provided that the following conditions are
9 : met:
10 :
11 : * Redistributions of source code must retain the above copyright
12 : notice, this list of conditions and the following disclaimer.
13 :
14 : * Redistributions in binary form must reproduce the above copyright
15 : notice, this list of conditions and the following disclaimer in the
16 : documentation and/or other materials provided with the distribution.
17 :
18 : * Neither the name of Adobe Systems, Network Resonance, Mozilla nor
19 : the names of its contributors may be used to endorse or promote
20 : products derived from this software without specific prior written
21 : permission.
22 :
23 : THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 : "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 : LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26 : A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27 : OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28 : SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29 : LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 : DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 : THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 : (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 : OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 : */
35 :
36 : #include <nr_api.h>
37 : #include "nr_socket_wrapper.h"
38 :
39 0 : int nr_socket_wrapper_factory_create_int(void *obj, nr_socket_wrapper_factory_vtbl *vtbl,
40 : nr_socket_wrapper_factory **wrapperp)
41 : {
42 : int _status;
43 0 : nr_socket_wrapper_factory *wrapper=0;
44 :
45 0 : if (!(wrapper=RCALLOC(sizeof(nr_socket_wrapper_factory))))
46 0 : ABORT(R_NO_MEMORY);
47 :
48 0 : wrapper->obj=obj;
49 0 : wrapper->vtbl=vtbl;
50 :
51 0 : *wrapperp=wrapper;
52 0 : _status=0;
53 : abort:
54 0 : return(_status);
55 : }
56 :
57 0 : int nr_socket_wrapper_factory_wrap(nr_socket_wrapper_factory *wrapper,
58 : nr_socket *inner,
59 : nr_socket **socketp)
60 : {
61 0 : return wrapper->vtbl->wrap(wrapper->obj, inner, socketp);
62 : }
63 :
64 0 : int nr_socket_wrapper_factory_destroy(nr_socket_wrapper_factory **wrapperp)
65 : {
66 : nr_socket_wrapper_factory *wrapper;
67 :
68 0 : if (!wrapperp || !*wrapperp)
69 0 : return 0;
70 :
71 0 : wrapper = *wrapperp;
72 0 : *wrapperp = 0;
73 :
74 0 : assert(wrapper->vtbl);
75 0 : if (wrapper->vtbl)
76 0 : wrapper->vtbl->destroy(&wrapper->obj);
77 :
78 0 : RFREE(wrapper);
79 :
80 0 : return 0;
81 : }
82 :
|