79cc0160ce80a1fe1c28b3e4fc152e5063383ecf
[openjpeg.git] / src / lib / openjpip / channel_manager.h
1 /*
2  * $Id: channel_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         CHANNEL_MANAGER_H_
32 # define        CHANNEL_MANAGER_H_
33
34 #include <time.h>
35 #include "query_parser.h"
36 #include "cachemodel_manager.h"
37 #include "auxtrans_manager.h"
38
39 /** maximum length of channel identifier*/
40 #define MAX_LENOFCID 30
41
42 /** Channel parameters*/
43 typedef struct channel_param{
44   cachemodel_param_t *cachemodel; /**< reference pointer to the cache model*/
45   char cid[MAX_LENOFCID];         /**< channel identifier*/
46   cnew_transport_t aux;           /**< auxiliary transport*/
47   /* - a record of the client's capabilities and preferences to the extent that the server queues requests*/
48   time_t start_tm;                /**< starting time*/
49   struct channel_param *next;     /**< pointer to the next channel*/
50 } channel_param_t;
51
52
53 /** Channel list parameters*/
54 typedef struct channellist_param{
55   channel_param_t *first; /**< first channel pointer of the list*/
56   channel_param_t *last;  /**< last  channel pointer of the list*/
57 } channellist_param_t;
58
59
60 /**
61  * generate a channel list
62  *
63  * @return pointer to the generated channel list
64  */
65 channellist_param_t * gene_channellist(void);
66
67
68 /**
69  * generate a channel under the channel list
70  *
71  * @param[in] query_param query parameters
72  * @param[in] auxtrans    auxiliary transport
73  * @param[in] cachemodel  reference cachemodel
74  * @param[in] channellist channel list pointer
75  * @return                pointer to the generated channel
76  */
77 channel_param_t * gene_channel( query_param_t query_param, auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel, channellist_param_t *channellist);
78
79 /**
80  * set channel variable parameters
81  *
82  * @param[in]     query_param query parameters
83  * @param[in,out] channel     pointer to the modifying channel
84  */
85 void set_channel_variable_param( query_param_t query_param, channel_param_t *channel);
86
87 /**
88  * delete a channel
89  *
90  * @param[in] channel address of the deleting channel pointer
91  * @param[in,out] channellist channel list pointer
92  */
93 void delete_channel( channel_param_t **channel, channellist_param_t *channellist);
94
95
96 /**
97  * delete channel list
98  *
99  * @param[in,out] channellist address of the channel list pointer
100  */
101 void delete_channellist( channellist_param_t **channellist);
102
103
104 /**
105  * print all channel parameters
106  *
107  * @param[in] channellist channel list pointer
108  */
109 void print_allchannel( channellist_param_t *channellist);
110
111
112 /**
113  * search a channel by channel ID
114  *
115  * @param[in] cid         channel identifier
116  * @param[in] channellist channel list pointer
117  * @return                found channel pointer
118  */
119 channel_param_t * search_channel( const char cid[], channellist_param_t *channellist);
120 #endif      /* !CHANNEL_MANAGER_H_ */