Modification of opj_dec_server to be portable to windows
This commit is contained in:
parent
081178cd9a
commit
42e5077688
|
@ -5,6 +5,9 @@ What's New for OpenJPIP
|
||||||
! : changed
|
! : changed
|
||||||
+ : added
|
+ : added
|
||||||
|
|
||||||
|
May 10, 2011
|
||||||
|
! [kaori] Modification of opj_dec_server to be portable to windows
|
||||||
|
|
||||||
May 9, 2011
|
May 9, 2011
|
||||||
* [kaori] Removal of c99 from the compile option (to be compatible to win platform) and bool definition in libopenjpip/bool.h
|
* [kaori] Removal of c99 from the compile option (to be compatible to win platform) and bool definition in libopenjpip/bool.h
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ LIBDIR = ../../libopenjpip
|
||||||
LIBFNAME = $(LIBDIR)/libopenjpip_local.a
|
LIBFNAME = $(LIBDIR)/libopenjpip_local.a
|
||||||
CFLAGS = -O3 -Wall -I$(LIBDIR)
|
CFLAGS = -O3 -Wall -I$(LIBDIR)
|
||||||
LDFLAGS = -L$(LIBDIR) -lm -lopenjpeg -lopenjpip_local
|
LDFLAGS = -L$(LIBDIR) -lm -lopenjpeg -lopenjpip_local
|
||||||
|
#-lws2_32
|
||||||
|
|
||||||
ALL = opj_dec_server
|
ALL = opj_dec_server
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $Id: imgsock_manager.c 53 2011-05-09 16:55:39Z kaori $
|
* $Id: imgsock_manager.c 54 2011-05-10 13:22:47Z kaori $
|
||||||
*
|
*
|
||||||
* Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
|
* Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
|
||||||
* Copyright (c) 2002-2011, Professor Benoit Macq
|
* Copyright (c) 2002-2011, Professor Benoit Macq
|
||||||
|
@ -33,26 +33,26 @@
|
||||||
#define strcasecmp _stricmp
|
#define strcasecmp _stricmp
|
||||||
#else
|
#else
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/uio.h>
|
||||||
|
#include <sys/param.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <netdb.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <netdb.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/uio.h>
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/param.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include "imgsock_manager.h"
|
#include "imgsock_manager.h"
|
||||||
|
|
||||||
#define BUF_LEN 256
|
#define BUF_LEN 256
|
||||||
|
|
||||||
int open_listeningsocket()
|
SOCKET open_listeningsocket()
|
||||||
{
|
{
|
||||||
int listening_socket;
|
SOCKET listening_socket;
|
||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
int sock_optval = 1;
|
int sock_optval = 1;
|
||||||
int port = 5000;
|
int port = 5000;
|
||||||
|
@ -69,17 +69,20 @@ int open_listeningsocket()
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(&sin, 0, sizeof(sin));
|
||||||
sin.sin_family = AF_INET;
|
sin.sin_family = AF_INET;
|
||||||
sin.sin_port = htons(port);
|
sin.sin_port = htons(port);
|
||||||
sin.sin_addr.s_addr = htonl(INADDR_ANY);
|
sin.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||||
|
|
||||||
if ( bind(listening_socket, (struct sockaddr *)&sin, sizeof(sin)) < 0 ){
|
if ( bind(listening_socket, (struct sockaddr *)&sin, sizeof(sin)) < 0 ){
|
||||||
perror("bind");
|
perror("bind");
|
||||||
|
closesocket(listening_socket);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( listen(listening_socket, SOMAXCONN) == -1){
|
if( listen(listening_socket, SOMAXCONN) == -1){
|
||||||
perror("listen");
|
perror("listen");
|
||||||
|
closesocket(listening_socket);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
printf("port %d is listened\n", port);
|
printf("port %d is listened\n", port);
|
||||||
|
@ -87,18 +90,18 @@ int open_listeningsocket()
|
||||||
return listening_socket;
|
return listening_socket;
|
||||||
}
|
}
|
||||||
|
|
||||||
msgtype_t identify_clientmsg( int connected_socket)
|
msgtype_t identify_clientmsg( SOCKET connected_socket)
|
||||||
{
|
{
|
||||||
int read_size;
|
int receive_size;
|
||||||
char buf[BUF_LEN];
|
char buf[BUF_LEN];
|
||||||
char *magicid[] = { "JPT-stream", "PNM request", "XML request", "CID request", "CID destroy", "JP2 save", "QUIT"};
|
char *magicid[] = { "JPT-stream", "PNM request", "XML request", "CID request", "CID destroy", "JP2 save", "QUIT"};
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
read_size = read_line( connected_socket, buf);
|
receive_size = receive_line( connected_socket, buf);
|
||||||
|
|
||||||
if( read_size == 0){
|
if( receive_size == 0){
|
||||||
fprintf( stderr, "Error to read the header of client message\n");
|
fprintf( stderr, "Error to receive the header of client message\n");
|
||||||
return ERROR;
|
return MSGERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
for( i=0; i<NUM_OF_MSGTYPES; i++){
|
for( i=0; i<NUM_OF_MSGTYPES; i++){
|
||||||
|
@ -109,10 +112,10 @@ msgtype_t identify_clientmsg( int connected_socket)
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf( stderr, "Cannot identify client message type\n");
|
fprintf( stderr, "Cannot identify client message type\n");
|
||||||
return ERROR;
|
return MSGERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
Byte_t * receive_JPTstream( int connected_socket, char *target, char *cid, int *streamlen)
|
Byte_t * receive_JPTstream( SOCKET connected_socket, char *target, char *cid, int *streamlen)
|
||||||
{
|
{
|
||||||
Byte_t *jptstream=NULL, *ptr;
|
Byte_t *jptstream=NULL, *ptr;
|
||||||
char buf[BUF_LEN], versionstring[] = "version 1.0";
|
char buf[BUF_LEN], versionstring[] = "version 1.0";
|
||||||
|
@ -121,39 +124,39 @@ Byte_t * receive_JPTstream( int connected_socket, char *target, char *cid, int *
|
||||||
target[0] = 0;
|
target[0] = 0;
|
||||||
cid[0] = 0;
|
cid[0] = 0;
|
||||||
|
|
||||||
if((linelen = read_line( connected_socket, buf)) == 0)
|
if((linelen = receive_line( connected_socket, buf)) == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
if( strncmp( versionstring, buf, strlen(versionstring))!=0){
|
if( strncmp( versionstring, buf, strlen(versionstring))!=0){
|
||||||
fprintf( stderr, "Wrong format\n");
|
fprintf( stderr, "Wrong format\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((linelen = read_line( connected_socket, buf)) == 0)
|
if((linelen = receive_line( connected_socket, buf)) == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if( strstr( buf, "jp2")){
|
if( strstr( buf, "jp2")){
|
||||||
// register cid option
|
// register cid option
|
||||||
strcpy( target, buf);
|
strcpy( target, buf);
|
||||||
|
|
||||||
if((linelen = read_line( connected_socket, buf)) == 0)
|
if((linelen = receive_line( connected_socket, buf)) == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
strcpy( cid, buf);
|
strcpy( cid, buf);
|
||||||
|
|
||||||
if((linelen = read_line( connected_socket, buf)) == 0)
|
if((linelen = receive_line( connected_socket, buf)) == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
*streamlen = atoi( buf);
|
*streamlen = atoi( buf);
|
||||||
fprintf( stderr, "Reading Data length: %d\n", *streamlen);
|
fprintf( stderr, "Receiveing Data length: %d\n", *streamlen);
|
||||||
|
|
||||||
|
|
||||||
jptstream = (unsigned char *)malloc( (*streamlen));
|
jptstream = (unsigned char *)malloc( (*streamlen));
|
||||||
ptr = jptstream;
|
ptr = jptstream;
|
||||||
remlen = (*streamlen);
|
remlen = (*streamlen);
|
||||||
while( remlen > 0){
|
while( remlen > 0){
|
||||||
redlen = read( connected_socket, ptr, remlen);
|
redlen = recv( connected_socket, ptr, remlen, 0);
|
||||||
if( redlen == -1){
|
if( redlen == -1){
|
||||||
fprintf( stderr, "read jptstream error\n");
|
fprintf( stderr, "receive jptstream error\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
remlen -= redlen;
|
remlen -= redlen;
|
||||||
|
@ -164,9 +167,9 @@ Byte_t * receive_JPTstream( int connected_socket, char *target, char *cid, int *
|
||||||
return jptstream;
|
return jptstream;
|
||||||
}
|
}
|
||||||
|
|
||||||
void send_stream( int connected_socket, void *stream, int length);
|
void send_stream( SOCKET connected_socket, void *stream, int length);
|
||||||
|
|
||||||
void send_XMLstream( int connected_socket, Byte_t *xmlstream, int length)
|
void send_XMLstream( SOCKET connected_socket, Byte_t *xmlstream, int length)
|
||||||
{
|
{
|
||||||
Byte_t header[5];
|
Byte_t header[5];
|
||||||
|
|
||||||
|
@ -180,7 +183,7 @@ void send_XMLstream( int connected_socket, Byte_t *xmlstream, int length)
|
||||||
send_stream( connected_socket, xmlstream, length);
|
send_stream( connected_socket, xmlstream, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
void send_CIDstream( int connected_socket, char *cid, int cidlen)
|
void send_CIDstream( SOCKET connected_socket, char *cid, int cidlen)
|
||||||
{
|
{
|
||||||
Byte_t header[4];
|
Byte_t header[4];
|
||||||
|
|
||||||
|
@ -193,7 +196,7 @@ void send_CIDstream( int connected_socket, char *cid, int cidlen)
|
||||||
send_stream( connected_socket, cid, cidlen);
|
send_stream( connected_socket, cid, cidlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
void send_PNMstream( int connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
|
void send_PNMstream( SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval)
|
||||||
{
|
{
|
||||||
int pnmlen = 0;
|
int pnmlen = 0;
|
||||||
Byte_t header[7];
|
Byte_t header[7];
|
||||||
|
@ -212,13 +215,13 @@ void send_PNMstream( int connected_socket, Byte_t *pnmstream, unsigned int width
|
||||||
send_stream( connected_socket, pnmstream, pnmlen);
|
send_stream( connected_socket, pnmstream, pnmlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
void send_stream( int connected_socket, void *stream, int length)
|
void send_stream( SOCKET connected_socket, void *stream, int length)
|
||||||
{
|
{
|
||||||
void *ptr = stream;
|
void *ptr = stream;
|
||||||
int remlen = length;
|
int remlen = length;
|
||||||
|
|
||||||
while( remlen > 0){
|
while( remlen > 0){
|
||||||
int sentlen = write( connected_socket, ptr, remlen);
|
int sentlen = send( connected_socket, ptr, remlen, 0);
|
||||||
if( sentlen == -1){
|
if( sentlen == -1){
|
||||||
fprintf( stderr, "sending stream error\n");
|
fprintf( stderr, "sending stream error\n");
|
||||||
break;
|
break;
|
||||||
|
@ -228,14 +231,14 @@ void send_stream( int connected_socket, void *stream, int length)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int read_line(int socket, char *p)
|
int receive_line(SOCKET connected_socket, char *p)
|
||||||
{
|
{
|
||||||
int len = 0;
|
int len = 0;
|
||||||
while (1){
|
while (1){
|
||||||
int ret;
|
int ret;
|
||||||
ret = read(socket, p, 1);
|
ret = recv( connected_socket, p, 1, 0);
|
||||||
if ( ret == -1 ){
|
if ( ret == -1 ){
|
||||||
perror("read");
|
perror("receive");
|
||||||
exit(1);
|
exit(1);
|
||||||
} else if ( ret == 0 ){
|
} else if ( ret == 0 ){
|
||||||
break;
|
break;
|
||||||
|
@ -248,12 +251,12 @@ int read_line(int socket, char *p)
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
if( len == 0)
|
if( len == 0)
|
||||||
fprintf( stderr, "Header read error\n");
|
fprintf( stderr, "Header receive error\n");
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
void response_signal( int connected_socket, bool succeed)
|
void response_signal( SOCKET connected_socket, bool succeed)
|
||||||
{
|
{
|
||||||
Byte_t code;
|
Byte_t code;
|
||||||
|
|
||||||
|
@ -262,6 +265,6 @@ void response_signal( int connected_socket, bool succeed)
|
||||||
else
|
else
|
||||||
code = 0;
|
code = 0;
|
||||||
|
|
||||||
if( write( connected_socket, &code, 1) != 1)
|
if( send( connected_socket, &code, 1, 0) != 1)
|
||||||
fprintf( stderr, "Response signalling error\n");
|
fprintf( stderr, "Response signalling error\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $Id: imgsock_manager.h 53 2011-05-09 16:55:39Z kaori $
|
* $Id: imgsock_manager.h 54 2011-05-10 13:22:47Z kaori $
|
||||||
*
|
*
|
||||||
* Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
|
* Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
|
||||||
* Copyright (c) 2002-2011, Professor Benoit Macq
|
* Copyright (c) 2002-2011, Professor Benoit Macq
|
||||||
|
@ -34,16 +34,22 @@
|
||||||
#include "bool.h"
|
#include "bool.h"
|
||||||
#include "byte_manager.h"
|
#include "byte_manager.h"
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <winsock2.h>
|
||||||
|
#else
|
||||||
|
typedef int SOCKET;
|
||||||
|
#define closesocket close
|
||||||
|
#endif //_WIN32
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* open listening socket
|
* open listening socket
|
||||||
*
|
*
|
||||||
* @return file descriptor for the new socket
|
* @return new socket
|
||||||
*/
|
*/
|
||||||
int open_listeningsocket();
|
SOCKET open_listeningsocket();
|
||||||
|
|
||||||
#define NUM_OF_MSGTYPES 7
|
#define NUM_OF_MSGTYPES 7
|
||||||
typedef enum eMSGTYPE{ JPTSTREAM, PNMREQ, XMLREQ, CIDREQ, CIDDST, JP2SAVE, QUIT, ERROR} msgtype_t;
|
typedef enum eMSGTYPE{ JPTSTREAM, PNMREQ, XMLREQ, CIDREQ, CIDDST, JP2SAVE, QUIT, MSGERROR} msgtype_t;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* indeitify client message type
|
* indeitify client message type
|
||||||
|
@ -51,7 +57,7 @@ typedef enum eMSGTYPE{ JPTSTREAM, PNMREQ, XMLREQ, CIDREQ, CIDDST, JP2SAVE, QUIT,
|
||||||
* @param [in] connected_socket file descriptor of the connected socket
|
* @param [in] connected_socket file descriptor of the connected socket
|
||||||
* @return message type
|
* @return message type
|
||||||
*/
|
*/
|
||||||
msgtype_t identify_clientmsg( int connected_socket);
|
msgtype_t identify_clientmsg( SOCKET connected_socket);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* receive JPT-stream from client
|
* receive JPT-stream from client
|
||||||
|
@ -62,7 +68,7 @@ msgtype_t identify_clientmsg( int connected_socket);
|
||||||
* @param [out] streamlen length of the received codestream
|
* @param [out] streamlen length of the received codestream
|
||||||
* @return codestream
|
* @return codestream
|
||||||
*/
|
*/
|
||||||
Byte_t * receive_JPTstream( int connected_socket, char *target, char *cid, int *streamlen);
|
Byte_t * receive_JPTstream( SOCKET connected_socket, char *target, char *cid, int *streamlen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* send PGM/PPM image stream to the client
|
* send PGM/PPM image stream to the client
|
||||||
|
@ -74,7 +80,7 @@ Byte_t * receive_JPTstream( int connected_socket, char *target, char *cid, int *
|
||||||
* @param [in] numofcomp number of components of the image
|
* @param [in] numofcomp number of components of the image
|
||||||
* @param [in] maxval maximum value of the image (only 255 supported)
|
* @param [in] maxval maximum value of the image (only 255 supported)
|
||||||
*/
|
*/
|
||||||
void send_PNMstream( int connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval);
|
void send_PNMstream( SOCKET connected_socket, Byte_t *pnmstream, unsigned int width, unsigned int height, unsigned int numofcomp, Byte_t maxval);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* send XML data stream to the client
|
* send XML data stream to the client
|
||||||
|
@ -83,7 +89,7 @@ void send_PNMstream( int connected_socket, Byte_t *pnmstream, unsigned int width
|
||||||
* @param [in] xmlstream xml data stream
|
* @param [in] xmlstream xml data stream
|
||||||
* @param [in] length legnth of the xml data stream
|
* @param [in] length legnth of the xml data stream
|
||||||
*/
|
*/
|
||||||
void send_XMLstream( int connected_socket, Byte_t *xmlstream, int length);
|
void send_XMLstream( SOCKET connected_socket, Byte_t *xmlstream, int length);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* send CID data stream to the client
|
* send CID data stream to the client
|
||||||
|
@ -92,7 +98,7 @@ void send_XMLstream( int connected_socket, Byte_t *xmlstream, int length);
|
||||||
* @param [in] cid cid string
|
* @param [in] cid cid string
|
||||||
* @param [in] cidlen legnth of the cid string
|
* @param [in] cidlen legnth of the cid string
|
||||||
*/
|
*/
|
||||||
void send_CIDstream( int connected_socket, char *cid, int cidlen);
|
void send_CIDstream( SOCKET connected_socket, char *cid, int cidlen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* send response signal to the client
|
* send response signal to the client
|
||||||
|
@ -100,17 +106,17 @@ void send_CIDstream( int connected_socket, char *cid, int cidlen);
|
||||||
* @param [in] connected_socket file descriptor of the connected socket
|
* @param [in] connected_socket file descriptor of the connected socket
|
||||||
* @param [in] succeed whether if the requested process succeeded
|
* @param [in] succeed whether if the requested process succeeded
|
||||||
*/
|
*/
|
||||||
void response_signal( int connected_socket, bool succeed);
|
void response_signal( SOCKET connected_socket, bool succeed);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* read a string line (ending with '\n') from client
|
* receive a string line (ending with '\n') from client
|
||||||
*
|
*
|
||||||
* @param [in] connected_socket file descriptor of the connected socket
|
* @param [in] connected_socket file descriptor of the connected socket
|
||||||
* @param [out] buf string to be stored
|
* @param [out] buf string to be stored
|
||||||
* @return red size
|
* @return red size
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int read_line(int connected_socket, char *buf);
|
int receive_line(SOCKET connected_socket, char *buf);
|
||||||
#endif /* !IMGSOCK_MANAGER_H_ */
|
#endif /* !IMGSOCK_MANAGER_H_ */
|
||||||
|
|
||||||
/*! \file
|
/*! \file
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $Id: opj_dec_server.c 46 2011-02-17 14:50:55Z kaori $
|
* $Id: opj_dec_server.c 54 2011-05-10 13:22:47Z kaori $
|
||||||
*
|
*
|
||||||
* Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
|
* Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
|
||||||
* Copyright (c) 2002-2011, Professor Benoit Macq
|
* Copyright (c) 2002-2011, Professor Benoit Macq
|
||||||
|
@ -47,9 +47,6 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "byte_manager.h"
|
#include "byte_manager.h"
|
||||||
#include "msgqueue_manager.h"
|
#include "msgqueue_manager.h"
|
||||||
|
@ -58,6 +55,14 @@
|
||||||
#include "jptstream_manager.h"
|
#include "jptstream_manager.h"
|
||||||
#include "cache_manager.h"
|
#include "cache_manager.h"
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
WSADATA initialisation_win32;
|
||||||
|
#else
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#endif //_WIN32
|
||||||
|
|
||||||
//! maximum length of target name
|
//! maximum length of target name
|
||||||
#define MAX_LENOFTARGET 128
|
#define MAX_LENOFTARGET 128
|
||||||
|
|
||||||
|
@ -73,7 +78,7 @@
|
||||||
* @param[in,out] jptlen address of jptstream length
|
* @param[in,out] jptlen address of jptstream length
|
||||||
* @param[in,out] msgqueue message queue pointer
|
* @param[in,out] msgqueue message queue pointer
|
||||||
*/
|
*/
|
||||||
void handle_JPTstreamMSG( int connected_socket, cachelist_param_t *cachelist, Byte_t **jptstream, int *jptlen, msgqueue_param_t *msgqueue);
|
void handle_JPTstreamMSG( SOCKET connected_socket, cachelist_param_t *cachelist, Byte_t **jptstream, int *jptlen, msgqueue_param_t *msgqueue);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* handle PNM request message
|
* handle PNM request message
|
||||||
|
@ -83,7 +88,7 @@ void handle_JPTstreamMSG( int connected_socket, cachelist_param_t *cachelist, By
|
||||||
* @param[in] msgqueue message queue pointer
|
* @param[in] msgqueue message queue pointer
|
||||||
* @param[in] cachelist cache list pointer
|
* @param[in] cachelist cache list pointer
|
||||||
*/
|
*/
|
||||||
void handle_PNMreqMSG( int connected_socket, Byte_t *jptstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist);
|
void handle_PNMreqMSG( SOCKET connected_socket, Byte_t *jptstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* handle XML request message
|
* handle XML request message
|
||||||
|
@ -92,7 +97,7 @@ void handle_PNMreqMSG( int connected_socket, Byte_t *jptstream, msgqueue_param_t
|
||||||
* @param[in] jptstream address of caching jptstream pointer
|
* @param[in] jptstream address of caching jptstream pointer
|
||||||
* @param[in] cachelist cache list pointer
|
* @param[in] cachelist cache list pointer
|
||||||
*/
|
*/
|
||||||
void handle_XMLreqMSG( int connected_socket, Byte_t *jptstream, cachelist_param_t *cachelist);
|
void handle_XMLreqMSG( SOCKET connected_socket, Byte_t *jptstream, cachelist_param_t *cachelist);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* handle ChannelID request message
|
* handle ChannelID request message
|
||||||
|
@ -100,7 +105,7 @@ void handle_XMLreqMSG( int connected_socket, Byte_t *jptstream, cachelist_param_
|
||||||
* @param[in] connected_socket socket descriptor
|
* @param[in] connected_socket socket descriptor
|
||||||
* @param[in] cachelist cache list pointer
|
* @param[in] cachelist cache list pointer
|
||||||
*/
|
*/
|
||||||
void handle_CIDreqMSG( int connected_socket, cachelist_param_t *cachelist);
|
void handle_CIDreqMSG( SOCKET connected_socket, cachelist_param_t *cachelist);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* handle distroy ChannelID message
|
* handle distroy ChannelID message
|
||||||
|
@ -108,7 +113,7 @@ void handle_CIDreqMSG( int connected_socket, cachelist_param_t *cachelist);
|
||||||
* @param[in] connected_socket socket descriptor
|
* @param[in] connected_socket socket descriptor
|
||||||
* @param[in,out] cachelist cache list pointer
|
* @param[in,out] cachelist cache list pointer
|
||||||
*/
|
*/
|
||||||
void handle_dstCIDreqMSG( int connected_socket, cachelist_param_t *cachelist);
|
void handle_dstCIDreqMSG( SOCKET connected_socket, cachelist_param_t *cachelist);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* handle saving JP2 file request message
|
* handle saving JP2 file request message
|
||||||
|
@ -118,19 +123,28 @@ void handle_dstCIDreqMSG( int connected_socket, cachelist_param_t *cachelist);
|
||||||
* @param[in] msgqueue message queue pointer
|
* @param[in] msgqueue message queue pointer
|
||||||
* @param[in] jptstream address of caching jptstream pointer
|
* @param[in] jptstream address of caching jptstream pointer
|
||||||
*/
|
*/
|
||||||
void handle_JP2saveMSG( int connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jptstream);
|
void handle_JP2saveMSG( SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jptstream);
|
||||||
|
|
||||||
int main(int argc, char *argv[]){
|
int main(int argc, char *argv[]){
|
||||||
|
|
||||||
int connected_socket;
|
SOCKET connected_socket;
|
||||||
struct sockaddr_in peer_sin;
|
struct sockaddr_in peer_sin;
|
||||||
Byte_t *jptstream = NULL;
|
Byte_t *jptstream = NULL;
|
||||||
int jptlen = 0;
|
int jptlen = 0;
|
||||||
msgqueue_param_t *msgqueue = gene_msgqueue( true, NULL);
|
msgqueue_param_t *msgqueue = gene_msgqueue( true, NULL);
|
||||||
bool quit = false;
|
bool quit = false;
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
int erreur = WSAStartup(MAKEWORD(2,2),&initialisation_win32);
|
||||||
|
if( erreur!=0)
|
||||||
|
fprintf( stderr, "Erreur initialisation Winsock error : %d %d\n",erreur,WSAGetLastError());
|
||||||
|
else
|
||||||
|
printf( "Initialisation Winsock\n");
|
||||||
|
#endif //_WIN32
|
||||||
|
|
||||||
int listening_socket = open_listeningsocket();
|
int listening_socket = open_listeningsocket();
|
||||||
socklen_t addrlen = sizeof(peer_sin);
|
|
||||||
|
int addrlen = sizeof(peer_sin);
|
||||||
|
|
||||||
cachelist_param_t *cachelist = gene_cachelist();
|
cachelist_param_t *cachelist = gene_cachelist();
|
||||||
|
|
||||||
|
@ -165,19 +179,19 @@ int main(int argc, char *argv[]){
|
||||||
case QUIT:
|
case QUIT:
|
||||||
quit = true;
|
quit = true;
|
||||||
break;
|
break;
|
||||||
case ERROR:
|
case MSGERROR:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("cut the connection. listening to port\n");
|
printf("cut the connection. listening to port\n");
|
||||||
if( close(connected_socket) == -1 ){
|
if( closesocket(connected_socket) != 0){
|
||||||
perror("close");
|
perror("close");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if( quit)
|
if( quit)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if( close(listening_socket) == -1 ){
|
if( closesocket(listening_socket) != 0){
|
||||||
perror("close");
|
perror("close");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -190,10 +204,18 @@ int main(int argc, char *argv[]){
|
||||||
save_codestream( jptstream, jptlen, "jpt");
|
save_codestream( jptstream, jptlen, "jpt");
|
||||||
free( jptstream);
|
free( jptstream);
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
if( WSACleanup() != 0){
|
||||||
|
printf("\nError in WSACleanup : %d %d",erreur,WSAGetLastError());
|
||||||
|
}else{
|
||||||
|
printf("\nWSACleanup OK\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_JPTstreamMSG( int connected_socket, cachelist_param_t *cachelist,
|
void handle_JPTstreamMSG( SOCKET connected_socket, cachelist_param_t *cachelist,
|
||||||
Byte_t **jptstream, int *jptlen, msgqueue_param_t *msgqueue)
|
Byte_t **jptstream, int *jptlen, msgqueue_param_t *msgqueue)
|
||||||
{
|
{
|
||||||
Byte_t *newjptstream;
|
Byte_t *newjptstream;
|
||||||
|
@ -231,7 +253,7 @@ void handle_JPTstreamMSG( int connected_socket, cachelist_param_t *cachelist,
|
||||||
response_signal( connected_socket, true);
|
response_signal( connected_socket, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_PNMreqMSG( int connected_socket, Byte_t *jptstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
|
void handle_PNMreqMSG( SOCKET connected_socket, Byte_t *jptstream, msgqueue_param_t *msgqueue, cachelist_param_t *cachelist)
|
||||||
{
|
{
|
||||||
Byte_t *pnmstream;
|
Byte_t *pnmstream;
|
||||||
ihdrbox_param_t *ihdrbox;
|
ihdrbox_param_t *ihdrbox;
|
||||||
|
@ -239,14 +261,14 @@ void handle_PNMreqMSG( int connected_socket, Byte_t *jptstream, msgqueue_param_t
|
||||||
cache_param_t *cache;
|
cache_param_t *cache;
|
||||||
int fw, fh;
|
int fw, fh;
|
||||||
|
|
||||||
read_line( connected_socket, cid);
|
receive_line( connected_socket, cid);
|
||||||
if(!(cache = search_cacheBycid( cid, cachelist)))
|
if(!(cache = search_cacheBycid( cid, cachelist)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
read_line( connected_socket, tmp);
|
receive_line( connected_socket, tmp);
|
||||||
fw = atoi( tmp);
|
fw = atoi( tmp);
|
||||||
|
|
||||||
read_line( connected_socket, tmp);
|
receive_line( connected_socket, tmp);
|
||||||
fh = atoi( tmp);
|
fh = atoi( tmp);
|
||||||
|
|
||||||
pnmstream = jpt_to_pnm( jptstream, msgqueue, cache->csn, fw, fh, &cache->ihdrbox);
|
pnmstream = jpt_to_pnm( jptstream, msgqueue, cache->csn, fw, fh, &cache->ihdrbox);
|
||||||
|
@ -256,12 +278,12 @@ void handle_PNMreqMSG( int connected_socket, Byte_t *jptstream, msgqueue_param_t
|
||||||
free( pnmstream);
|
free( pnmstream);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_XMLreqMSG( int connected_socket, Byte_t *jptstream, cachelist_param_t *cachelist)
|
void handle_XMLreqMSG( SOCKET connected_socket, Byte_t *jptstream, cachelist_param_t *cachelist)
|
||||||
{
|
{
|
||||||
char cid[MAX_LENOFCID];
|
char cid[MAX_LENOFCID];
|
||||||
cache_param_t *cache;
|
cache_param_t *cache;
|
||||||
|
|
||||||
read_line( connected_socket, cid);
|
receive_line( connected_socket, cid);
|
||||||
if(!(cache = search_cacheBycid( cid, cachelist)))
|
if(!(cache = search_cacheBycid( cid, cachelist)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -272,13 +294,13 @@ void handle_XMLreqMSG( int connected_socket, Byte_t *jptstream, cachelist_param_
|
||||||
free( xmlstream);
|
free( xmlstream);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_CIDreqMSG( int connected_socket, cachelist_param_t *cachelist)
|
void handle_CIDreqMSG( SOCKET connected_socket, cachelist_param_t *cachelist)
|
||||||
{
|
{
|
||||||
char target[MAX_LENOFTARGET], *cid = NULL;
|
char target[MAX_LENOFTARGET], *cid = NULL;
|
||||||
cache_param_t *cache;
|
cache_param_t *cache;
|
||||||
int cidlen = 0;
|
int cidlen = 0;
|
||||||
|
|
||||||
read_line( connected_socket, target);
|
receive_line( connected_socket, target);
|
||||||
cache = search_cache( target, cachelist);
|
cache = search_cache( target, cachelist);
|
||||||
|
|
||||||
if( cache){
|
if( cache){
|
||||||
|
@ -290,23 +312,23 @@ void handle_CIDreqMSG( int connected_socket, cachelist_param_t *cachelist)
|
||||||
send_CIDstream( connected_socket, cid, cidlen);
|
send_CIDstream( connected_socket, cid, cidlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_dstCIDreqMSG( int connected_socket, cachelist_param_t *cachelist)
|
void handle_dstCIDreqMSG( SOCKET connected_socket, cachelist_param_t *cachelist)
|
||||||
{
|
{
|
||||||
char cid[MAX_LENOFCID];
|
char cid[MAX_LENOFCID];
|
||||||
|
|
||||||
read_line( connected_socket, cid);
|
receive_line( connected_socket, cid);
|
||||||
remove_cachecid( cid, cachelist);
|
remove_cachecid( cid, cachelist);
|
||||||
response_signal( connected_socket, true);
|
response_signal( connected_socket, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_JP2saveMSG( int connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jptstream)
|
void handle_JP2saveMSG( SOCKET connected_socket, cachelist_param_t *cachelist, msgqueue_param_t *msgqueue, Byte_t *jptstream)
|
||||||
{
|
{
|
||||||
char cid[MAX_LENOFCID];
|
char cid[MAX_LENOFCID];
|
||||||
cache_param_t *cache;
|
cache_param_t *cache;
|
||||||
Byte_t *jp2stream;
|
Byte_t *jp2stream;
|
||||||
Byte8_t jp2len;
|
Byte8_t jp2len;
|
||||||
|
|
||||||
read_line( connected_socket, cid);
|
receive_line( connected_socket, cid);
|
||||||
if(!(cache = search_cacheBycid( cid, cachelist)))
|
if(!(cache = search_cacheBycid( cid, cachelist)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue