00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef MSGQUEUE_MANAGER_H_
00033 # define MSGQUEUE_MANAGER_H_
00034
00035 #include "byte_manager.h"
00036 #include "cachemodel_manager.h"
00037 #include "placeholder_manager.h"
00038
00039 #define PRECINCT_MSG 0
00040 #define EXT_PRECINCT_MSG 1
00041 #define TILE_HEADER_MSG 2
00042 #define TILE_MSG 4
00043 #define EXT_TILE_MSG 5
00044 #define MAINHEADER_MSG 6
00045 #define METADATA_MSG 8
00046
00048 typedef struct message_param {
00049 OPJ_BOOL
00050 last_byte;
00051 Byte8_t in_class_id;
00052 Byte8_t class_id;
00053 Byte8_t csn;
00054 Byte8_t bin_offset;
00055 Byte8_t length;
00056 Byte8_t aux;
00057 OPJ_OFF_T res_offset;
00058 placeholder_param_t *phld;
00059 struct message_param *next;
00060 } message_param_t;
00061
00063 typedef struct msgqueue_param {
00064 message_param_t *first;
00065 message_param_t *last;
00066 OPJ_BOOL stateless;
00067 cachemodel_param_t *cachemodel;
00068 } msgqueue_param_t;
00069
00077 msgqueue_param_t * gene_msgqueue(OPJ_BOOL stateless,
00078 cachemodel_param_t *cachemodel);
00079
00085 void delete_msgqueue(msgqueue_param_t **msgqueue);
00086
00093 void delete_message_in_msgqueue(message_param_t **message,
00094 msgqueue_param_t *msgqueue);
00095
00101 void print_msgqueue(msgqueue_param_t *msgqueue);
00102
00103
00109 void enqueue_mainheader(msgqueue_param_t *msgqueue);
00110
00117 void enqueue_tileheader(int tile_id, msgqueue_param_t *msgqueue);
00118
00126 void enqueue_tile(Byte4_t tile_id, int level, msgqueue_param_t *msgqueue);
00127
00137 void enqueue_precinct(int seq_id, int tile_id, int comp_id, int layers,
00138 msgqueue_param_t *msgqueue);
00139
00140
00147 void enqueue_metadata(Byte8_t meta_id, msgqueue_param_t *msgqueue);
00148
00149
00156 void recons_stream_from_msgqueue(msgqueue_param_t *msgqueue, int tmpfd);
00157
00158
00167 void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset,
00168 msgqueue_param_t *msgqueue);
00169
00178 void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream,
00179 Byte8_t streamlen, metadatalist_param_t *metadatalist);
00180
00191 Byte8_t comp_precinct_id(int t, int c, int s, int num_components,
00192 int num_tiles);
00193
00194 #endif