Go to the documentation of this file.
43 #include "fcgi_stdio.h"
44 #define logstream FCGI_stdout
48 #define FCGI_stdout stdout
49 #define FCGI_stderr stderr
50 #define logstream stderr
71 typedef struct server_record {
91 server_record_t * init_JPIPserver(
int tcp_auxport,
int udp_auxport);
98 void terminate_JPIPserver(server_record_t **rec);
106 QR_t * parse_querystring(
const char *query_string);
115 OPJ_BOOL process_JPIPrequest(server_record_t *rec, QR_t *qr);
123 void send_responsedata(server_record_t *rec, QR_t *qr);
131 void end_QRprocess(server_record_t *rec, QR_t **qr);
144 OPJ_BOOL targets, QR_t *qr, server_record_t *rec);
OPJ_OFF_T get_filesize(int fd)
Get file size.
Definition: byte_manager.c:167
OPJ_API void OPJ_CALLCONV output_index(index_t *index)
print index parameters
Definition: openjpip.c:481
@ CIDDST
Definition: imgsock_manager.h:39
index_t *OPJ_CALLCONV get_index_from_JP2file(int fd)
Parse JP2 file and get index information from cidx box inside.
Definition: openjpip.c:448
@ CIDREQ
Definition: imgsock_manager.h:39
Session parameters.
Definition: session_manager.h:38
void * opj_calloc(size_t num, size_t size)
Allocate a memory block with elements initialized to 0.
Definition: opj_malloc.c:198
auxiliary transport setting parameters
Definition: auxtrans_manager.h:38
void delete_query(query_param_t **query)
delete query
Definition: query_parser.c:449
ihdrbox_param_t * ihdrbox
ihdr box going into JP2 file
Definition: openjpip.h:222
void delete_targetlist(targetlist_param_t **targetlist)
delete target list
Definition: target_manager.c:192
void recons_stream_from_msgqueue(msgqueue_param_t *msgqueue, int tmpfd)
reconstruct JPT/JPP-stream from message queue
Definition: msgqueue_manager.c:443
SOCKET listening_socket
listenning socket
Definition: openjpip.h:162
OPJ_API OPJ_BOOL OPJ_CALLCONV fwrite_jp2k(const char fname[], jpip_dec_param_t *dec)
Write J2K/JP2 codestream to a file.
Definition: openjpip.c:396
@ SIZREQ
Definition: imgsock_manager.h:39
OPJ_API dec_server_record_t *OPJ_CALLCONV init_dec_server(int port)
Initialize the image decoding server.
Definition: openjpip.c:230
cachelist_param_t * gene_cachelist(void)
generate a cache list
Definition: cache_manager.c:36
dec_server_record_t *OPJ_CALLCONV init_dec_server(int port)
Initialize the image decoding server.
Definition: openjpip.c:230
void OPJ_CALLCONV decode_jpip(jpip_dec_param_t *dec)
Decode jpip codestream.
Definition: openjpip.c:378
SOCKET client_t
Client socket identifier.
Definition: openjpip.h:167
OPJ_BOOL close_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
REQUEST: channel close (cclose)
Definition: jpip_parser.c:131
void save_codestream(Byte_t *codestream, OPJ_SIZE_T streamlen, const char *fmt)
Definition: jpipstream_manager.c:58
Byte_t * jpipstream
JPT/JPP stream.
Definition: openjpip.h:159
void OPJ_CALLCONV terminate_dec_server(dec_server_record_t **rec)
Terminate the image decoding server.
Definition: openjpip.c:244
uint8_t Byte_t
Definition: byte_manager.h:37
#define OPJ_API
Definition: openjpeg.h:95
#define FCGI_stdout
Definition: auxtrans_manager.c:46
Session list parameters.
Definition: session_manager.h:45
Byte8_t jp2klen
length of j2kstream or JP2 file
Definition: openjpip.h:224
OPJ_BOOL gene_JPIPstream(query_param_t query_param, target_param_t *target, session_param_t *cursession, channel_param_t *curchannel, msgqueue_param_t **msgqueue)
REQUEST: view-window (fsiz)
Definition: jpip_parser.c:204
void print_msgqueue(msgqueue_param_t *msgqueue)
print message queue
Definition: msgqueue_manager.c:97
@ tcp
Definition: query_parser.h:41
OPJ_API jpip_dec_param_t *OPJ_CALLCONV init_jpipdecoder(OPJ_BOOL jp2)
Initialize jpip decoder.
Definition: openjpip.c:334
targetlist_param_t * gene_targetlist(void)
generate a target list
Definition: target_manager.c:57
void OPJ_CALLCONV destroy_index(index_t **idx)
Destroy index parameters.
Definition: openjpip.c:476
OPJ_API void OPJ_CALLCONV output_log(OPJ_BOOL messages, OPJ_BOOL metadata, OPJ_BOOL ihdrbox, jpip_dec_param_t *dec)
Option; print out parameter values to stderr.
Definition: openjpip.c:418
index parameters
Definition: index_manager.h:86
msgqueue_param_t * gene_msgqueue(OPJ_BOOL stateless, cachemodel_param_t *cachemodel)
generate message queue
Definition: msgqueue_manager.c:59
void delete_cachelist(cachelist_param_t **cachelist)
delete cache list
Definition: cache_manager.c:48
#define FCGI_stderr
Definition: auxtrans_manager.c:47
void handle_CIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
handle ChannelID request message
Definition: dec_clientmsg_handler.c:183
void delete_index(index_param_t **index)
delete index
Definition: index_manager.c:192
query_param_t * parse_query(const char *query_string)
parse query
Definition: query_parser.c:88
struct dec_server_record dec_server_record_t
Decoding server static records.
OPJ_BOOL open_channel(query_param_t query_param, sessionlist_param_t *sessionlist, auxtrans_param_t auxtrans, target_param_t *target, session_param_t **cursession, channel_param_t **curchannel)
REQUEST: new channel (cnew) assignment.
Definition: jpip_parser.c:100
void OPJ_CALLCONV output_log(OPJ_BOOL messages, OPJ_BOOL metadata, OPJ_BOOL ihdrbox, jpip_dec_param_t *dec)
Option; print out parameter values to stderr.
Definition: openjpip.c:418
Byte_t bpc
bits per component
Definition: ihdrbox_manager.h:43
Byte_t * jp2kstream
J2K codestream or JP2 file codestream.
Definition: openjpip.h:223
void OPJ_CALLCONV destroy_jpipdecoder(jpip_dec_param_t **dec)
Destroy jpip decoding parameters.
Definition: openjpip.c:435
OPJ_API client_t OPJ_CALLCONV accept_connection(dec_server_record_t *rec)
Accept client connection.
Definition: openjpip.c:260
void print_queryparam(query_param_t query_param)
print query parameters
Definition: query_parser.c:238
@ QUIT
Definition: imgsock_manager.h:39
int SOCKET
Definition: sock_manager.h:40
Byte_t * jpipstream
JPT/JPP-stream.
Definition: openjpip.h:218
int OPJ_BOOL
Definition: openjpeg.h:116
size_t OPJ_SIZE_T
Definition: openjpeg.h:139
void print_index(index_param_t index)
print index parameters
Definition: index_manager.c:122
void handle_JPIPstreamMSG(SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jpipstream, OPJ_SIZE_T *streamlen, msgqueue_param_t *msgqueue)
handle JPT- JPP- stream message
Definition: dec_clientmsg_handler.c:42
@ JP2SAVE
Definition: imgsock_manager.h:39
@ non
Definition: query_parser.h:41
void handle_dstCIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
handle distroy ChannelID message
Definition: dec_clientmsg_handler.c:203
sessionlist_param_t * gene_sessionlist(void)
generate a session list
Definition: session_manager.c:47
auxtrans_param_t init_aux_transport(int tcp_auxport, int udp_auxport)
Initialize auxiliary transport server of JPIP server.
Definition: auxtrans_manager.c:51
SOCKET open_listeningsocket(uint16_t port)
open listening socket
Definition: sock_manager.c:57
void print_allsession(sessionlist_param_t *sessionlist)
print all sessions
Definition: session_manager.c:186
OPJ_BOOL is_allsent(cachemodel_param_t cachemodel)
check if all data has been sent
Definition: cachemodel_manager.c:211
Byte4_t width
Definition: ihdrbox_manager.h:41
OPJ_BOOL OPJ_CALLCONV fwrite_jp2k(const char fname[], jpip_dec_param_t *dec)
Write J2K/JP2 codestream to a file.
Definition: openjpip.c:396
void handle_TIDreqMSG(SOCKET connected_socket, cachelist_param_t *cachelist)
handle TargetID request message
Definition: dec_clientmsg_handler.c:165
void delete_sessionlist(sessionlist_param_t **sessionlist)
delete session list
Definition: session_manager.c:161
Byte_t * fetch_bytes(int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
fetch bytes of data in file stream
Definition: byte_manager.c:52
OPJ_API void OPJ_CALLCONV decode_jpip(jpip_dec_param_t *dec)
Decode jpip codestream.
Definition: openjpip.c:378
Decoding server static records.
Definition: openjpip.h:157
void parse_metamsg(msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist)
parse JPT- JPP- stream to message queue
Definition: msgqueue_manager.c:687
#define OPJ_TRUE
Definition: openjpeg.h:117
void * opj_malloc(size_t size)
Allocate an uninitialized memory block.
Definition: opj_malloc.c:191
ihdrbox_param_t * gene_ihdrbox(metadatalist_param_t *metadatalist, Byte_t *jpipstream)
generate ihdr box
Definition: ihdrbox_manager.c:36
@ udp
Definition: query_parser.h:41
client_t OPJ_CALLCONV accept_connection(dec_server_record_t *rec)
Accept client connection.
Definition: openjpip.c:260
@ TIDREQ
Definition: imgsock_manager.h:39
void opj_free(void *ptr)
Deallocates or frees a memory block.
Definition: opj_malloc.c:246
Byte_t * recons_jp2(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len)
reconstruct jp2 file codestream from message queue
Definition: jp2k_encoder.c:98
OPJ_API void OPJ_CALLCONV destroy_index(index_t **idx)
Destroy index parameters.
Definition: openjpip.c:476
msgqueue_param_t * msgqueue
message queue
Definition: openjpip.h:220
struct jpip_dec_param jpip_dec_param_t
JPIP decoding parameters.
void close_aux_transport(auxtrans_param_t auxtrans)
Close auxiliary transport server of JPIP server.
void parse_JPIPstream(Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset, msgqueue_param_t *msgqueue)
parse JPT- JPP- stream to message queue
Definition: msgqueue_manager.c:631
int close_socket(SOCKET sock)
close socket
Definition: sock_manager.c:180
OPJ_API index_t *OPJ_CALLCONV get_index_from_JP2file(int fd)
Parse JP2 file and get index information from cidx box inside.
Definition: openjpip.c:448
OPJ_API OPJ_BOOL OPJ_CALLCONV handle_clientreq(client_t client, dec_server_record_t *rec)
Handle client request.
Definition: openjpip.c:272
Byte8_t csn
index of the codestream
Definition: msgqueue_manager.h:53
cachelist_param_t * cachelist
cache list
Definition: openjpip.h:158
OPJ_BOOL OPJ_CALLCONV handle_clientreq(client_t client, dec_server_record_t *rec)
Handle client request.
Definition: openjpip.c:272
@ XMLREQ
Definition: imgsock_manager.h:39
void OPJ_CALLCONV output_index(index_t *index)
print index parameters
Definition: openjpip.c:481
OPJ_BOOL OPJ_CALLCONV fread_jpip(const char fname[], jpip_dec_param_t *dec)
Read jpip codestream from a file.
Definition: openjpip.c:350
void send_responsedata_on_aux(OPJ_BOOL istcp, auxtrans_param_t auxtrans, const char cid[], void *data, OPJ_SIZE_T datalen, OPJ_SIZE_T maxlenPerFrame)
Send response data on aux transport.
Definition: auxtrans_manager.c:109
void handle_JP2saveMSG(SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jpipstream)
handle saving JP2 file request message
Definition: dec_clientmsg_handler.c:250
Target list parameters.
Definition: target_manager.h:59
void handle_PNMreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
handle PNM request message
Definition: dec_clientmsg_handler.c:102
OPJ_API OPJ_BOOL OPJ_CALLCONV fread_jpip(const char fname[], jpip_dec_param_t *dec)
Read jpip codestream from a file.
Definition: openjpip.c:350
void handle_XMLreqMSG(SOCKET connected_socket, Byte_t *jpipstream, cachelist_param_t *cachelist)
handle XML request message
Definition: dec_clientmsg_handler.c:141
index_param_t * parse_jp2file(int fd)
parse JP2 file AnnexI: Indexing JPEG2000 files for JPIP
Definition: index_manager.c:73
JPIP decoding parameters.
Definition: openjpip.h:217
@ PNMREQ
Definition: imgsock_manager.h:39
OPJ_API void OPJ_CALLCONV terminate_dec_server(dec_server_record_t **rec)
Terminate the image decoding server.
Definition: openjpip.c:244
target parameters
Definition: target_manager.h:40
Query parameters.
Definition: query_parser.h:47
OPJ_BOOL associate_channel(query_param_t query_param, sessionlist_param_t *sessionlist, session_param_t **cursession, channel_param_t **curchannel)
REQUEST: channel association this must be processed before any process.
Definition: jpip_parser.c:82
message queue parameters
Definition: msgqueue_manager.h:63
OPJ_API void OPJ_CALLCONV destroy_jpipdecoder(jpip_dec_param_t **dec)
Destroy jpip decoding parameters.
Definition: openjpip.c:435
Byte4_t height
Definition: ihdrbox_manager.h:40
Definition: cache_manager.h:50
void handle_SIZreqMSG(SOCKET connected_socket, Byte_t *jpipstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
handle SIZ request message
Definition: dec_clientmsg_handler.c:214
OPJ_SIZE_T jpipstreamlen
length of jpipstream
Definition: openjpip.h:160
#define OPJ_FALSE
Definition: openjpeg.h:118
Byte_t * recons_j2k(msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int fw, int fh, Byte8_t *j2klen)
reconstruct j2k codestream from message queue
Definition: jp2k_encoder.c:79
SOCKET accept_socket(SOCKET listening_socket)
accept a new connection to the listenning socket
Definition: sock_manager.c:96
I.5.3.1 Image Header box.
Definition: ihdrbox_manager.h:39
index_param_t index_t
Redefinition of index parameters.
Definition: openjpip.h:285
msgtype_t identify_clientmsg(SOCKET connected_socket)
indeitify client message type
Definition: imgsock_manager.c:39
Byte8_t jpiplen
length of jpipstream
Definition: openjpip.h:219
Channel parameters.
Definition: channel_manager.h:43
@ MSGERROR
Definition: imgsock_manager.h:39
uint64_t Byte8_t
Definition: byte_manager.h:40
#define OPJ_CALLCONV
Definition: openjpeg.h:98
msgqueue_param_t * msgqueue
parsed message queue of jpipstream
Definition: openjpip.h:161
OPJ_BOOL identify_target(query_param_t query_param, targetlist_param_t *targetlist, target_param_t **target)
REQUEST: target identification by target or tid request.
Definition: jpip_parser.c:49
metadatalist_param_t * metadatalist
metadata list going into JP2 file
Definition: openjpip.h:221
message_param_t * first
first message pointer of the list
Definition: msgqueue_manager.h:64
@ JPIPSTREAM
Definition: imgsock_manager.h:39
void delete_msgqueue(msgqueue_param_t **msgqueue)
delete message queue
Definition: msgqueue_manager.c:75
jpip_dec_param_t *OPJ_CALLCONV init_jpipdecoder(OPJ_BOOL jp2)
Initialize jpip decoder.
Definition: openjpip.c:334
Byte2_t nc
number of components
Definition: ihdrbox_manager.h:42
void print_alltarget(targetlist_param_t *targetlist)
print all target parameters
Definition: target_manager.c:213