update j2k_lib with new opj type
[openjpeg.git] / applications / jpip / libopenjpip / target_manager.h
1 /*
2  * $Id: target_manager.h 44 2011-02-15 12:32:29Z kaori $
3  *
4  * Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
5  * Copyright (c) 2002-2011, 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 "bool.h"
35 #include "index_manager.h"
36
37 /** maximum length of target identifier*/
38 #define MAX_LENOFTID 30
39
40 /** target parameters*/
41 typedef struct target_param{
42   char tid[MAX_LENOFTID];         /**< target identifier*/
43   char *targetname;               /**< local file path or URL ( URL is suported only with SERVER mode)*/
44   int fd;                         /**< file descriptor*/
45 #ifdef SERVER
46   char *tmpfname;                 /**< temporal file name to download a remote target file*/
47 #endif
48   int csn;                        /**< codestream number                                  */
49   index_param_t *codeidx;         /**< index information of codestream                    */
50   int num_of_use;                 /**< numbers of sessions refering to this target        */
51   bool jppstream;                 /**< if this target can return JPP-stream               */
52   bool jptstream;                 /**< if this target can return JPP-stream               */
53   struct target_param *next;      /**< pointer to the next target                         */
54 } target_param_t;
55
56
57 /** Target list parameters*/
58 typedef struct targetlist_param{
59   target_param_t *first; /**< first target pointer of the list*/
60   target_param_t *last;  /**< last  target pointer of the list*/
61 } targetlist_param_t;
62
63
64
65 /**
66  * generate a target list
67  *
68  * @return pointer to the generated target list
69  */
70 targetlist_param_t * gene_targetlist(void);
71
72
73 /**
74  * generate a target
75  *
76  * @param[in] targetlist target list to insert the generated target
77  * @param[in] targetpath file path or URL of the target
78  * @return               pointer to the generated target
79  */
80 target_param_t * gene_target( targetlist_param_t *targetlist, char *targetpath);
81
82
83 /**
84  * refer a target, used to make a new cache model
85  *
86  * @param[in]  reftarget reference target pointer
87  * @param[out] ptr       address of feeding target pointer
88  */
89 void refer_target( target_param_t *reftarget, target_param_t **ptr);
90
91
92 /**
93  * refer a target, used to make a new cache model
94  *
95  * @param[in]  target reference pointer to the target
96  */
97 void unrefer_target( target_param_t *target);
98
99 /**
100  * delete a target
101  *
102  * @param[in,out] target address of the deleting target pointer
103  */
104 void delete_target( target_param_t **target);
105
106
107 /**
108  * delete a target in list
109  *
110  * @param[in,out] target     address of the deleting target pointer
111  * @param[in] targetlist target list pointer
112  */
113 void delete_target_in_list( target_param_t **target, targetlist_param_t *targetlist);
114
115
116 /**
117  * delete target list
118  *
119  * @param[in,out] targetlist address of the target list pointer
120  */
121 void delete_targetlist(targetlist_param_t **targetlist);
122
123
124 /**
125  * print target parameters
126  *
127  * @param[in] target target pointer
128  */
129 void print_target( target_param_t *target);
130
131 /**
132  * print all target parameters
133  *
134  * @param[in] targetlist target list pointer
135  */
136 void print_alltarget( targetlist_param_t *targetlist);
137
138
139 /**
140  * search a target by target name
141  *
142  * @param[in] targetname target name
143  * @param[in] targetlist target list pointer
144  * @return               found target pointer
145  */
146 target_param_t * search_target( const char targetname[], targetlist_param_t *targetlist);
147
148
149 /**
150  * search a target by tid
151  *
152  * @param[in] tid        target identifier
153  * @param[in] targetlist target list pointer
154  * @return               found target pointer
155  */
156 target_param_t * search_targetBytid( const char tid[], targetlist_param_t *targetlist);
157
158 #endif      /* !TARGET_MANAGER_H_ */
159