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_resolver.h"
38 :
39 0 : int nr_resolver_create_int(void *obj, nr_resolver_vtbl *vtbl, nr_resolver **resolverp)
40 : {
41 : int _status;
42 0 : nr_resolver *resolver=0;
43 :
44 0 : if (!(resolver=RCALLOC(sizeof(nr_resolver))))
45 0 : ABORT(R_NO_MEMORY);
46 :
47 0 : resolver->obj=obj;
48 0 : resolver->vtbl=vtbl;
49 :
50 0 : *resolverp=resolver;
51 0 : _status=0;
52 : abort:
53 0 : return(_status);
54 : }
55 :
56 0 : int nr_resolver_destroy(nr_resolver **resolverp)
57 : {
58 : nr_resolver *resolver;
59 :
60 0 : if(!resolverp || !*resolverp)
61 0 : return(0);
62 :
63 0 : resolver=*resolverp;
64 0 : *resolverp=0;
65 :
66 0 : resolver->vtbl->destroy(&resolver->obj);
67 :
68 0 : RFREE(resolver);
69 :
70 0 : return(0);
71 : }
72 :
73 0 : int nr_resolver_resolve(nr_resolver *resolver,
74 : nr_resolver_resource *resource,
75 : int (*cb)(void *cb_arg, nr_transport_addr *addr),
76 : void *cb_arg,
77 : void **handle)
78 : {
79 0 : return resolver->vtbl->resolve(resolver->obj, resource, cb, cb_arg, handle);
80 : }
81 :
82 0 : int nr_resolver_cancel(nr_resolver *resolver, void *handle)
83 : {
84 0 : return resolver->vtbl->cancel(resolver->obj, handle);
85 : }
|