Reformat: apply reformattin on .h files (#128)
[openjpeg.git] / src / lib / openjpip / channel_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     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,
78                                auxtrans_param_t auxtrans, cachemodel_param_t *cachemodel,
79                                channellist_param_t *channellist);
80
81 /**
82  * set channel variable parameters
83  *
84  * @param[in]     query_param query parameters
85  * @param[in,out] channel     pointer to the modifying channel
86  */
87 void set_channel_variable_param(query_param_t query_param,
88                                 channel_param_t *channel);
89
90 /**
91  * delete a channel
92  *
93  * @param[in] channel address of the deleting channel pointer
94  * @param[in,out] channellist channel list pointer
95  */
96 void delete_channel(channel_param_t **channel,
97                     channellist_param_t *channellist);
98
99
100 /**
101  * delete channel list
102  *
103  * @param[in,out] channellist address of the channel list pointer
104  */
105 void delete_channellist(channellist_param_t **channellist);
106
107
108 /**
109  * print all channel parameters
110  *
111  * @param[in] channellist channel list pointer
112  */
113 void print_allchannel(channellist_param_t *channellist);
114
115
116 /**
117  * search a channel by channel ID
118  *
119  * @param[in] cid         channel identifier
120  * @param[in] channellist channel list pointer
121  * @return                found channel pointer
122  */
123 channel_param_t * search_channel(const char cid[],
124                                  channellist_param_t *channellist);
125 #endif      /* !CHANNEL_MANAGER_H_ */