Spelling fixes (patch by ka7, #890, rebased on top of master)
[openjpeg.git] / src / lib / openjpip / target_manager.h
1 /*
2  * $Id$
3  *
4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
5  * Copyright (c) 2002-2014, Professor Benoit Macq
6  * Copyright (c) 2010-2011, Kaori Hagihara
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. 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  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #ifndef     TARGET_MANAGER_H_
32 # define    TARGET_MANAGER_H_
33
34 #include "index_manager.h"
35
36 /** maximum length of target identifier*/
37 #define MAX_LENOFTID 30
38
39 /** target parameters*/
40 typedef struct target_param {
41     char tid[MAX_LENOFTID];         /**< target identifier*/
42     char *targetname;               /**< local file path or URL ( URL is supported only with SERVER mode)*/
43     int fd;                         /**< file descriptor*/
44 #ifdef SERVER
45     char *tmpfname;                 /**< temporal file name to download a remote target file*/
46 #endif
47     int csn;                        /**< codestream number                                  */
48     index_param_t
49     *codeidx;         /**< index information of codestream                    */
50     int num_of_use;                 /**< numbers of sessions referring to this target       */
51     OPJ_BOOL jppstream;                 /**< if this target can return JPP-stream               */
52     OPJ_BOOL jptstream;                 /**< if this target can return JPP-stream               */
53     struct target_param
54         *next;      /**< pointer to the next target                         */
55 } target_param_t;
56
57
58 /** Target list parameters*/
59 typedef struct targetlist_param {
60     target_param_t *first; /**< first target pointer of the list*/
61     target_param_t *last;  /**< last  target pointer of the list*/
62 } targetlist_param_t;
63
64
65
66 /**
67  * generate a target list
68  *
69  * @return pointer to the generated target list
70  */
71 targetlist_param_t * gene_targetlist(void);
72
73
74 /**
75  * generate a target
76  *
77  * @param[in] targetlist target list to insert the generated target
78  * @param[in] targetpath file path or URL of the target
79  * @return               pointer to the generated target
80  */
81 target_param_t * gene_target(targetlist_param_t *targetlist, char *targetpath);
82
83
84 /**
85  * refer a target, used to make a new cache model
86  *
87  * @param[in]  reftarget reference target pointer
88  * @param[out] ptr       address of feeding target pointer
89  */
90 void refer_target(target_param_t *reftarget, target_param_t **ptr);
91
92
93 /**
94  * refer a target, used to make a new cache model
95  *
96  * @param[in]  target reference pointer to the target
97  */
98 void unrefer_target(target_param_t *target);
99
100 /**
101  * delete a target
102  *
103  * @param[in,out] target address of the deleting target pointer
104  */
105 void delete_target(target_param_t **target);
106
107
108 /**
109  * delete a target in list
110  *
111  * @param[in,out] target     address of the deleting target pointer
112  * @param[in] targetlist target list pointer
113  */
114 void delete_target_in_list(target_param_t **target,
115                            targetlist_param_t *targetlist);
116
117
118 /**
119  * delete target list
120  *
121  * @param[in,out] targetlist address of the target list pointer
122  */
123 void delete_targetlist(targetlist_param_t **targetlist);
124
125
126 /**
127  * print target parameters
128  *
129  * @param[in] target target pointer
130  */
131 void print_target(target_param_t *target);
132
133 /**
134  * print all target parameters
135  *
136  * @param[in] targetlist target list pointer
137  */
138 void print_alltarget(targetlist_param_t *targetlist);
139
140
141 /**
142  * search a target by target name
143  *
144  * @param[in] targetname target name
145  * @param[in] targetlist target list pointer
146  * @return               found target pointer
147  */
148 target_param_t * search_target(const char targetname[],
149                                targetlist_param_t *targetlist);
150
151
152 /**
153  * search a target by tid
154  *
155  * @param[in] tid        target identifier
156  * @param[in] targetlist target list pointer
157  * @return               found target pointer
158  */
159 target_param_t * search_targetBytid(const char tid[],
160                                     targetlist_param_t *targetlist);
161
162 #endif      /* !TARGET_MANAGER_H_ */
163