[trunk] Import rev 1103 into trunk.
[openjpeg.git] / applications / jpip / libopenjpip / 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();
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( char cid[], channellist_param_t *channellist);
120 #endif      /* !CHANNEL_MANAGER_H_ */