CPPFLAGS="${CPPFLAGS} -DRND_LINUX"
-#using UDS socket
-CPPFLAGS="${CPPFLAGS} -D_USE_UDS_SOCKET_"
-#CPPFLAGS="${CPPFLAGS} -D_USE_UDS_SOCKET_TCP_"
-
# FMS_DEBUG - File Manager Service debug options
# To open debug options:
# export FMS_DEBUG=1 or configure --enable-debug
#define MS_TIMEOUT_SEC_10 10 /**< Response from Server time out */
#define MS_TIMEOUT_SEC_20 20 /**< Response from Media server time out */
-#ifdef _USE_UDS_SOCKET_
typedef enum{
MS_DB_BATCH_UPDATE_PORT = 0, /**< Media DB batch update */
MS_SCAN_DAEMON_PORT, /**< Port of communication between scanner and server */
MS_THUMB_DAEMON_PORT, /**< Port of Thumbnail server */
MS_PORT_MAX,
}ms_msg_port_type_e;
-#else
-#define MS_SCANNER_PORT 1001 /**< Directory Scanner */
-#define MS_DB_UPDATE_PORT 1002 /**< Media DB Update */
-#define MS_THUMB_CREATOR_PORT 1003 /**< Create thumbnail */
-#define MS_THUMB_DAEMON_PORT 1004 /**< Port of Thumbnail server */
-#define MS_THUMB_COMM_PORT 1005 /**< Port of communication between creator and server */
-#define MS_DB_BATCH_UPDATE_PORT 1006 /**< Media DB batch update */
-#define MS_SCAN_DAEMON_PORT 1007 /**< Port of communication between scanner and server */
-#define MS_SCAN_COMM_PORT 1008 /**< Port of communication between scanner and server */
-#endif
-
-#ifdef _USE_UDS_SOCKET_TCP_
-typedef enum{
- MS_DB_BATCH_UPDATE_TCP_PORT = 0, /**< Media DB batch update */
- MS_THUMB_CREATOR_TCP_PORT, /**< Create thumbnail */
- MS_PORT_MAX,
-}ms_msg_port_type_e;
-#endif
#define MAX_MSG_SIZE 4096
extern "C" {
#endif
-#ifdef _USE_UDS_SOCKET_
#include <sys/un.h>
-#else
-#include <sys/socket.h>
-#endif
-
-#ifdef _USE_UDS_SOCKET_TCP_
-#include <sys/un.h>
-#endif
-
#include <netinet/in.h>
#include <arpa/inet.h>
MS_PROTOCOL_TCP
} ms_protocol_e;
-#ifdef _USE_UDS_SOCKET_
int ms_ipc_create_client_socket(ms_protocol_e protocol, int timeout_sec, int *sock_fd, int port);
-#else
-int ms_ipc_create_client_socket(ms_protocol_e protocol, int timeout_sec, int *sock_fd);
-#endif
-
-#ifdef _USE_UDS_SOCKET_TCP_
-int ms_ipc_create_client_tcp_socket(ms_protocol_e protocol, int timeout_sec, int *sock_fd, int port);
-int ms_ipc_create_server_tcp_socket(ms_protocol_e protocol, int port, int *sock_fd);
-#endif
-
int ms_ipc_create_server_socket(ms_protocol_e protocol, int port, int *sock_fd);
-#ifdef _USE_UDS_SOCKET_
int ms_ipc_send_msg_to_server(int sockfd, int port, ms_comm_msg_s *send_msg, struct sockaddr_un *serv_addr);
int ms_ipc_send_msg_to_client(int sockfd, ms_comm_msg_s *send_msg, struct sockaddr_un *client_addr);
int ms_ipc_receive_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *client_addr, unsigned int *size, int *recv_socket);
int ms_ipc_wait_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *recv_addr, unsigned int *size, int connected);
-#else
-int ms_ipc_send_msg_to_server(int sockfd, int port, ms_comm_msg_s *send_msg, struct sockaddr_in *serv_addr);
-int ms_ipc_send_msg_to_client(int sockfd, ms_comm_msg_s *send_msg, struct sockaddr_in *client_addr);
-int ms_ipc_receive_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_in *client_addr, unsigned int *size);
-int ms_ipc_wait_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_in *recv_addr, unsigned int *size);
-#endif
#ifdef __cplusplus
}
int request_msg_size = 0;
int sockfd = -1;
int err = -1;
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un serv_addr;
-#else
- struct sockaddr_in serv_addr;
-#endif
+
unsigned int serv_addr_len = -1;
int port = MS_DB_UPDATE_PORT;
send_msg.uid = uid;
/*Create Socket*/
-#ifdef _USE_UDS_SOCKET_
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, MS_TIMEOUT_SEC_10, &sockfd, port);
-#else
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, MS_TIMEOUT_SEC_10, &sockfd);
-#endif
MSAPI_RETV_IF(ret != MS_MEDIA_ERR_NONE, ret);
ret = ms_ipc_send_msg_to_server(sockfd, port, &send_msg, &serv_addr);
return g_tcp_client_sock;
}
-#ifdef _USE_UDS_SOCKET_
extern char MEDIA_IPC_PATH[][70];
-#elif defined(_USE_UDS_SOCKET_TCP_)
-extern char MEDIA_IPC_PATH[][50];
-#endif
static int __media_db_prepare_tcp_client_socket()
{
int ret = MS_MEDIA_ERR_NONE;
int sockfd = -1;
-#ifdef _USE_UDS_SOCKET_
- struct sockaddr_un serv_addr;
-#elif defined(_USE_UDS_SOCKET_TCP_)
struct sockaddr_un serv_addr;
-#else
- struct sockaddr_in serv_addr;
-#endif
int port = MS_DB_BATCH_UPDATE_PORT;
/*Create TCP Socket*/
-#ifdef _USE_UDS_SOCKET_
ret = ms_ipc_create_client_socket(MS_PROTOCOL_TCP, MS_TIMEOUT_SEC_10, &sockfd, 0);
-#elif defined(_USE_UDS_SOCKET_TCP_)
- ret = ms_ipc_create_client_tcp_socket(MS_PROTOCOL_TCP, MS_TIMEOUT_SEC_10, &sockfd, MS_DB_BATCH_UPDATE_TCP_PORT);
-#else
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_TCP, MS_TIMEOUT_SEC_10, &sockfd);
-#endif
MSAPI_RETV_IF(ret != MS_MEDIA_ERR_NONE, ret);
/*Set server Address*/
memset(&serv_addr, 0, sizeof(serv_addr));
-#ifdef _USE_UDS_SOCKET_
serv_addr.sun_family = AF_UNIX;
MSAPI_DBG("%s", MEDIA_IPC_PATH[port]);
strcpy(serv_addr.sun_path, MEDIA_IPC_PATH[port]);
-#elif defined(_USE_UDS_SOCKET_TCP_)
- serv_addr.sun_family = AF_UNIX;
- MSAPI_DBG("%s", MEDIA_IPC_PATH[MS_DB_BATCH_UPDATE_TCP_PORT]);
- strcpy(serv_addr.sun_path, MEDIA_IPC_PATH[MS_DB_BATCH_UPDATE_TCP_PORT]);
-#else
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
- //serv_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
- serv_addr.sin_port = htons(port);
-#endif
/* Connecting to the media db server */
if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
static int __media_db_close_tcp_client_socket()
{
- close(g_tcp_client_sock);
- g_tcp_client_sock = -1;
+ int ret = MS_MEDIA_ERR_NONE;
- return 0;
+ if (g_tcp_client_sock != -1) {
+ if (close(g_tcp_client_sock)<0) {
+ MSAPI_DBG_ERR("sock(%d) close failed", g_tcp_client_sock);
+ MSAPI_DBG_STRERROR("socket close failed");
+ ret = MS_MEDIA_ERR_SOCKET_INTERNAL;
+ }
+ g_tcp_client_sock = -1;
+ }
+
+ return ret;
}
static int __media_db_request_batch_update(ms_msg_type_e msg_type, const char *request_msg, uid_t uid)
#include "media-util-dbg.h"
#include "media-util.h"
-#ifdef _USE_UDS_SOCKET_
char MEDIA_IPC_PATH[][70] ={
{"/var/run/media-server/media_ipc_dbbatchupdate.socket"},
{"/var/run/media-server/media_ipc_scandaemon.socket"},
{"/var/run/media-server/media_ipc_thumbdaemon_client%i.socket"},
};
-#elif defined(_USE_UDS_SOCKET_TCP_)
-char MEDIA_IPC_PATH[][50] ={
- {"/tmp/media_ipc_dbbatchupdate.dat"},
- {"/tmp/media_ipc_thumbcreator.dat"},
-};
-#endif
-
static int _mkdir(const char *dir, mode_t mode) {
char tmp[256];
char *p = NULL;
return mkdir(tmp, mode);
}
-#ifdef _USE_UDS_SOCKET_
int ms_ipc_create_client_socket(ms_protocol_e protocol, int timeout_sec, int *sock_fd, int port)
-#else
-int ms_ipc_create_client_socket(ms_protocol_e protocol, int timeout_sec, int *sock_fd)
-#endif
{
int sock = -1;
char *path;
int cx,len;
-#ifdef _USE_UDS_SOCKET_
-
if (tzplatform_getuid(TZ_USER_NAME) == 0 ){
cx = snprintf ( NULL, 0, MEDIA_IPC_PATH_CLIENT_ROOT[port],getpid());
buffer = (char*)malloc((cx + 1 )*sizeof(char));
buffer = (char*)malloc((cx + 1 )*sizeof(char));
snprintf ( buffer, cx + 1, MEDIA_IPC_PATH_CLIENT[port],tzplatform_getuid(TZ_USER_NAME),getpid());
}
-#endif
if(protocol == MS_PROTOCOL_UDP)
{
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un serv_addr;
-#endif
/* Create a datagram/UDP socket */
-#ifdef _USE_UDS_SOCKET_
if ((sock = socket(PF_FILE, SOCK_DGRAM, 0)) < 0) {
-#else
- if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
-#endif
MSAPI_DBG_STRERROR("socket failed");
return MS_MEDIA_ERR_SOCKET_CONN;
}
-#ifdef _USE_UDS_SOCKET_
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
MSAPI_DBG("%s", buffer);
if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
MSAPI_DBG_STRERROR("bind failed");
close(sock);
-#ifdef _USE_UDS_SOCKET_
free(buffer);
-#endif
return MS_MEDIA_ERR_SOCKET_CONN;
}
-#endif
}
else
{
/*Create TCP Socket*/
-#ifdef _USE_UDS_SOCKET_
if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) {
-#else
- if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
-#endif
MSAPI_DBG_STRERROR("socket failed");
-#ifdef _USE_UDS_SOCKET_
free(buffer);
-#endif
return MS_MEDIA_ERR_SOCKET_CONN;
}
}
if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv_timeout, sizeof(tv_timeout)) == -1) {
MSAPI_DBG_STRERROR("setsockopt failed");
close(sock);
-#ifdef _USE_UDS_SOCKET_
free(buffer);
-#endif
- return MS_MEDIA_ERR_SOCKET_CONN;
- }
- }
-
- *sock_fd = sock;
-#ifdef _USE_UDS_SOCKET_
- free(buffer);
-#endif
-
- return MS_MEDIA_ERR_NONE;
-}
-
-#ifdef _USE_UDS_SOCKET_TCP_
-int ms_ipc_create_client_tcp_socket(ms_protocol_e protocol, int timeout_sec, int *sock_fd, int port)
-{
- int sock = -1;
- struct timeval tv_timeout = { timeout_sec, 0 };
-
- /*Create TCP Socket*/
- if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) {
- MSAPI_DBG_ERR("socket failed: %s", strerror(errno));
return MS_MEDIA_ERR_SOCKET_CONN;
- }
-
- if (timeout_sec > 0) {
- if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv_timeout, sizeof(tv_timeout)) == -1) {
- MSAPI_DBG_ERR("setsockopt failed: %s", strerror(errno));
- close(sock);
- return MS_MEDIA_ERR_SOCKET_CONN;
- }
- }
-
- *sock_fd = sock;
-
- return MS_MEDIA_ERR_NONE;
-}
-
-int ms_ipc_create_server_tcp_socket(ms_protocol_e protocol, int port, int *sock_fd)
-{
- int i;
- bool bind_success = false;
- int sock = -1;
-
- struct sockaddr_un serv_addr;
- mode_t orig_mode;
-
- /* Create a TCP socket */
- if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) {
- MSAPI_DBG_ERR("socket failed: %s", strerror(errno));
- return MS_MEDIA_ERR_SOCKET_CONN;
- }
-
- memset(&serv_addr, 0, sizeof(serv_addr));
-
- serv_addr.sun_family = AF_UNIX;
- MSAPI_DBG("%s", MEDIA_IPC_PATH[port]);
- unlink(MEDIA_IPC_PATH[port]);
- strcpy(serv_addr.sun_path, MEDIA_IPC_PATH[port]);
-
- orig_mode = umask(0);
-
- /* Bind to the local address */
- for (i = 0; i < 20; i ++) {
- if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == 0) {
- bind_success = true;
- break;
}
- MSAPI_DBG("%d",i);
- usleep(250000);
}
- umask(orig_mode);
-
- if (bind_success == false) {
- MSAPI_DBG_ERR("bind failed : %s %d_", strerror(errno), errno);
- close(sock);
- return MS_MEDIA_ERR_SOCKET_CONN;
- }
-
- MSAPI_DBG("bind success");
-
- /* Listening */
- if (listen(sock, SOMAXCONN) < 0) {
- MSAPI_DBG_ERR("listen failed : %s", strerror(errno));
- close(sock);
- return MS_MEDIA_ERR_SOCKET_CONN;
- }
-
- MSAPI_DBG("Listening...");
-
*sock_fd = sock;
+ free(buffer);
return MS_MEDIA_ERR_NONE;
}
-#endif
int ms_ipc_create_server_socket(ms_protocol_e protocol, int port, int *sock_fd)
{
bool bind_success = false;
int sock = -1;
int n_reuse = 1;
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un serv_addr;
mode_t orig_mode;
-#else
- struct sockaddr_in serv_addr;
-#endif
unsigned short serv_port;
serv_port = port;
if(protocol == MS_PROTOCOL_UDP)
{
/* Create a datagram/UDP socket */
-#ifdef _USE_UDS_SOCKET_
if ((sock = socket(PF_FILE, SOCK_DGRAM, 0)) < 0) {
-#else
- if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
-#endif
MSAPI_DBG_STRERROR("socket failed");
return MS_MEDIA_ERR_SOCKET_CONN;
}
else
{
/* Create a TCP socket */
-#ifdef _USE_UDS_SOCKET_
if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) {
-#else
- if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
-#endif
MSAPI_DBG_STRERROR("socket failed");
return MS_MEDIA_ERR_SOCKET_CONN;
}
}
-#ifdef _USE_UDS_SOCKET_
-#else
- if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &n_reuse, sizeof(n_reuse)) == -1) {
- MSAPI_DBG_ERR("setsockopt failed: %s", strerror(errno));
- close(sock);
- return MS_MEDIA_ERR_SOCKET_INTERNAL;
- }
-#endif
+
memset(&serv_addr, 0, sizeof(serv_addr));
-#ifdef _USE_UDS_SOCKET_
+
serv_addr.sun_family = AF_UNIX;
// MSAPI_DBG_SLOG("%s", MEDIA_IPC_PATH[serv_port]);
unlink(MEDIA_IPC_PATH[serv_port]);
strcpy(serv_addr.sun_path, MEDIA_IPC_PATH[serv_port]);
-#else
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
-// serv_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
- serv_addr.sin_port = htons(serv_port);
-#endif
-
orig_mode = umask(0);
/* Bind to the local address */
return MS_MEDIA_ERR_NONE;
}
-#ifdef _USE_UDS_SOCKET_
int ms_ipc_send_msg_to_server(int sockfd, int port, ms_comm_msg_s *send_msg, struct sockaddr_un *serv_addr)
-#else
-int ms_ipc_send_msg_to_server(int sockfd, int port, ms_comm_msg_s *send_msg, struct sockaddr_in *serv_addr)
-#endif
{
int res = MS_MEDIA_ERR_NONE;
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un addr;
-#else
- struct sockaddr_in addr;
-#endif
/* Set server Address */
memset(&addr, 0, sizeof(addr));
-#ifdef _USE_UDS_SOCKET_
addr.sun_family = AF_UNIX;
strcpy(addr.sun_path, MEDIA_IPC_PATH[port]);
MSAPI_DBG("%s", addr.sun_path);
-#else
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = inet_addr(SERVER_IP);
- addr.sin_port = htons(port);
-#endif
if (sendto(sockfd, send_msg, sizeof(*(send_msg)), 0, (struct sockaddr *)&addr, sizeof(addr)) != sizeof(*(send_msg))) {
MSAPI_DBG_STRERROR("sendto failed");
return res;
}
-#ifdef _USE_UDS_SOCKET_
int ms_ipc_send_msg_to_client(int sockfd, ms_comm_msg_s *send_msg, struct sockaddr_un *client_addr)
-#else
-int ms_ipc_send_msg_to_client(int sockfd, ms_comm_msg_s *send_msg, struct sockaddr_in *client_addr)
-#endif
{
int res = MS_MEDIA_ERR_NONE;
return res;
}
-#ifdef _USE_UDS_SOCKET_
int ms_ipc_receive_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *recv_addr, unsigned int *addr_size, int *recv_socket)
-#else
-int ms_ipc_receive_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_in *recv_addr, unsigned int *addr_size)
-#endif
{
int recv_msg_size;
int client_socket = -1;
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un addr;
-#else
- struct sockaddr_in addr;
-#endif
socklen_t addr_len;
if (!recv_msg)
return MS_MEDIA_ERR_INVALID_PARAMETER;
-#ifdef _USE_UDS_SOCKET_
addr_len = sizeof(addr);
-#else
- addr_len = sizeof(struct sockaddr_in);
-#endif
-
if ((recv_msg_size = recvfrom(sockfd, recv_msg, msg_size, 0, (struct sockaddr *)&addr, &addr_len)) < 0) {
MSAPI_DBG_STRERROR("recvfrom failed");
return MS_MEDIA_ERR_SOCKET_RECEIVE;
}
-#ifdef _USE_UDS_SOCKET_
- if (recv_socket != NULL)
- *recv_socket = client_socket;
-#endif
+ MSAPI_DBG_SLOG("the path of received client address : %s", addr.sun_path);
if (recv_addr != NULL)
*recv_addr = addr;
return MS_MEDIA_ERR_NONE;
}
-#ifdef _USE_UDS_SOCKET_
int ms_ipc_wait_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *recv_addr, unsigned int *addr_size, int connected)
-#else
-int ms_ipc_wait_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_in *recv_addr, unsigned int *addr_size)
-#endif
{
int recv_msg_size;
socklen_t addr_len;
if (!recv_msg ||!recv_addr)
return MS_MEDIA_ERR_INVALID_PARAMETER;
-#ifdef _USE_UDS_SOCKET_
addr_len = sizeof(struct sockaddr_un);
-#else
- addr_len = sizeof(struct sockaddr_in);
-#endif
-
if ((recv_msg_size = recvfrom(sockfd, recv_msg, msg_size, 0, (struct sockaddr *)recv_addr, &addr_len)) < 0) {
MSAPI_DBG_STRERROR("recvfrom failed");
if (errno == EWOULDBLOCK) {
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
-#ifdef _USE_UDS_SOCKET_
#include <sys/un.h>
-#else
-#include <sys/socket.h>
-#endif
#include <sys/syscall.h>
#include <string.h>
#include <stdbool.h>
strncpy(send_msg.msg, request_msg, request_msg_size);
/*Create Socket*/
-#ifdef _USE_UDS_SOCKET_
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd, port);
-#else
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd);
-#endif
MSAPI_RETV_IF(ret != MS_MEDIA_ERR_NONE, ret);
ret = ms_ipc_send_msg_to_server(sockfd, port, &send_msg, NULL);
void callback(media_request_result_s * result, void *user_data)
{
printf("db updating done\n");
-
+
media_db_disconnect(db_handle);
g_main_loop_quit(mainloop);
}
*/
#include <arpa/inet.h>
#include <sys/types.h>
-#ifdef _USE_UDS_SOCKET_
+#include <errno.h>
#include <sys/un.h>
-#else
-#include <sys/socket.h>
-#endif
#include <malloc.h>
#include <vconf.h>
ms_comm_msg_s send_msg;
/*Create Socket*/
-#ifdef _USE_UDS_SOCKET_
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd, MS_SCAN_COMM_PORT);
-#else
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd);
-#endif
if (ret != MS_MEDIA_ERR_NONE)
return MS_MEDIA_ERR_SOCKET_CONN;
ms_comm_msg_s send_msg;
/*Create Socket*/
-#ifdef _USE_UDS_SOCKET_
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd, MS_SCAN_COMM_PORT);
-#else
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd);
-#endif
if (ret != MS_MEDIA_ERR_NONE)
return MS_MEDIA_ERR_SOCKET_CONN;
ms_comm_msg_s send_msg;
/*Create Socket*/
-#ifdef _USE_UDS_SOCKET_
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd, MS_SCAN_COMM_PORT);
-#else
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd);
-#endif
if (ret != MS_MEDIA_ERR_NONE)
return MS_MEDIA_ERR_SOCKET_CONN;
*/
#include <glib.h>
-#ifdef _USE_UDS_SOCKET_
#include <sys/un.h>
-#else
-#include <sys/socket.h>
-#endif
#include <arpa/inet.h>
#include "media-common-types.h"
#include "media-server-ipc.h"
int
_ms_thumb_recv_msg(int sock, int header_size, thumbMsg *msg);
-#ifdef _USE_UDS_SOCKET_
int
_ms_thumb_recv_udp_msg(int sock, int header_size, thumbMsg *msg, struct sockaddr_un *from_addr, unsigned int *from_size);
-#else
-int
-_ms_thumb_recv_udp_msg(int sock, int header_size, thumbMsg *msg, struct sockaddr_in *from_addr, unsigned int *from_size);
-#endif
int
_ms_thumb_set_buffer(thumbMsg *req_msg, unsigned char **buf, int *buf_size);
}
/* Create TCP Socket for batch query*/
-#ifdef _USE_UDS_SOCKET_TCP_
- ret = ms_ipc_create_server_tcp_socket(MS_PROTOCOL_TCP, MS_DB_BATCH_UPDATE_TCP_PORT, &tcp_sockfd);
-#else
ret = ms_ipc_create_server_socket(MS_PROTOCOL_TCP, MS_DB_BATCH_UPDATE_PORT, &tcp_sockfd);
-#endif
if(ret != MS_MEDIA_ERR_NONE) {
close(sockfd);
MS_DBG_ERR("Failed to create socket");
int sockfd = -1;
int err = -1;
int n_reuse = 1;
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un serv_addr;
-#else
- struct sockaddr_in serv_addr;
-#endif
unsigned int serv_addr_len = -1;
int port = MS_SCAN_COMM_PORT;
ms_comm_msg_s recv_msg;
GMainContext *res_context = NULL;
/*Create Socket*/
-#ifdef _USE_UDS_SOCKET_
ret = ms_ipc_create_server_socket(MS_PROTOCOL_UDP, MS_SCAN_COMM_PORT, &sockfd);
if (ret != MS_MEDIA_ERR_NONE) {
MS_DBG_ERR("ms_ipc_create_server_socket failed [%d]",ret);
g_mutex_unlock(scanner_mutex);
return MS_MEDIA_ERR_SOCKET_CONN;
}
-#else
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, MS_TIMEOUT_SEC_10, &sockfd);
- if (ret != MS_MEDIA_ERR_NONE) {
- MS_DBG_ERR("ms_ipc_create_client_socket failed [%d]",ret);
- g_mutex_unlock(scanner_mutex);
- return MS_MEDIA_ERR_SOCKET_CONN;
- }
- /* set socket re-use */
- if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &n_reuse, sizeof(n_reuse)) == -1) {
- MS_DBG_ERR("setsockopt failed: %s", strerror(errno));
- close(sockfd);
- g_mutex_unlock(scanner_mutex);
- return MS_MEDIA_ERR_SOCKET_INTERNAL;
- }
- /*Set server Address*/
- memset(&serv_addr, 0, sizeof(serv_addr));
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
- serv_addr.sin_port = htons(port);
- /* Bind to the local address */
- if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
- MS_DBG_ERR("bind failed [%s]", strerror(errno));
- close(sockfd);
- g_mutex_unlock(scanner_mutex);
- return MS_MEDIA_ERR_SOCKET_BIND;
- }
-#endif
/*Receive Response*/
serv_addr_len = sizeof(serv_addr);
#include <arpa/inet.h>
#include <sys/types.h>
-#ifdef _USE_UDS_SOCKET_
#include <sys/un.h>
-#else
-#include <sys/socket.h>
-#endif
#include <errno.h>
#include <malloc.h>
#include <vconf.h>
{
int pid;
int index;
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un *client_addr;
int client_socket;
-#else
- struct sockaddr_in *client_addr;
-#endif
}ms_req_owner_data;
int _ms_add_owner(ms_req_owner_data *owner_data)
{
-// MS_DBG("the length of array : %d", owner_list->len);
-// MS_DBG("pid : %d", owner_data->pid);
-// MS_DBG("client_addr : %p", owner_data->client_addr);
-
owner_data->index = -1;
g_array_append_val(owner_list, owner_data);
gboolean ms_read_socket(GIOChannel *src, GIOCondition condition, gpointer data)
{
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un *client_addr = NULL;
-#else
- struct sockaddr_in *client_addr = NULL;
-#endif
socklen_t client_addr_len;
ms_comm_msg_s recv_msg;
ms_comm_msg_s scan_msg;
}
/* Socket is readable */
-#ifdef _USE_UDS_SOCKET_
MS_MALLOC(client_addr, sizeof(struct sockaddr_un));
-#else
- MS_MALLOC(client_addr, sizeof(struct sockaddr_in));
-#endif
if (client_addr == NULL) {
MS_DBG_ERR("malloc failed");
g_mutex_unlock(scanner_mutex);
return TRUE;
}
-#ifdef _USE_UDS_SOCKET_
client_addr_len = sizeof(struct sockaddr_un);
-#else
- client_addr_len = sizeof(struct sockaddr_in);
-#endif
ret = ms_ipc_receive_message(sockfd, &recv_msg, sizeof(recv_msg), client_addr, NULL, &client_sock);
if (ret != MS_MEDIA_ERR_NONE) {
MS_DBG_ERR("ms_ipc_receive_message failed");
int sockfd = -1;
/*Create Socket*/
-#ifdef _USE_UDS_SOCKET_
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd, MS_SCAN_DAEMON_PORT);
-#else
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd);
-#endif
+
if (ret != MS_MEDIA_ERR_NONE)
return MS_MEDIA_ERR_SOCKET_CONN;
gboolean ms_read_db_socket(GIOChannel *src, GIOCondition condition, gpointer data)
{
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un client_addr;
-#else
- struct sockaddr_in client_addr;
-#endif
-
ms_comm_msg_s recv_msg;
int send_msg = MS_MEDIA_ERR_NONE;
int sockfd = MS_SOCK_NOT_ALLOCATE;
gboolean ms_read_db_tcp_socket(GIOChannel *src, GIOCondition condition, gpointer data)
{
-#ifdef _USE_UDS_SOCKET_
- struct sockaddr_un client_addr;
-#elif defined(_USE_UDS_SOCKET_TCP_)
struct sockaddr_un client_addr;
-#else
- struct sockaddr_in client_addr;
-#endif
unsigned int client_addr_len;
ms_comm_msg_s recv_msg;
thumbMsg *recv_msg;
} thumbRequest;
-#ifdef _USE_UDS_SOCKET_
extern char MEDIA_IPC_PATH[][70];
-#endif
-
gboolean _ms_thumb_agent_start_jobs(gpointer data)
{
MS_DBG("");
if (g_thumb_server_extracting) {
/* Need to inplement when crash happens */
-#if 0
- /* Restart thumbnail server */
- if (_ms_thumb_agent_execute_server() < 0) {
- MS_DBG_ERR("starting thumbnail-server failed");
- } else {
- MS_DBG("Thumbnail-server is started");
- }
-
- thumbMsg msg;
- thumbMsg recv_msg;
- memset((void *)&msg, 0, sizeof(msg));
- memset((void *)&recv_msg, 0, sizeof(recv_msg));
-
- msg.msg_type = 2; // THUMB_REQUEST_ALL_MEDIA
- msg.org_path[0] = '\0';
- msg.origin_path_size = 1;
- msg.dst_path[0] = '\0';
- msg.dest_path_size = 1;
-
- /* Command all thumbnail extraction to thumbnail server */
- if (!_ms_thumb_agent_send_msg_to_thumb_server(&msg, &recv_msg)) {
- MS_DBG_ERR("_ms_thumb_agent_send_msg_to_thumb_server is failed");
- }
-
- _ms_thumb_create_timer(g_timer_id);
-#else
MS_DBG_ERR("Thumbnail server is dead when processing all-thumbs extraction");
g_thumb_server_extracting = FALSE;
g_server_pid = 0;
-#endif
} else {
g_thumb_server_extracting = FALSE;
g_server_pid = 0;
{
int sock_fd = 0;
-#ifdef _USE_UDS_SOCKET_
- if ((sock_fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
-#elif defined(_USE_UDS_SOCKET_TCP_)
if ((sock_fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
-#else
- if ((sock_fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
-#endif
MS_DBG_STRERROR("socket failed");
return MS_MEDIA_ERR_SOCKET_CONN;
}
{
int sock_fd = 0;
-#ifdef _USE_UDS_SOCKET_
if ((sock_fd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0) {
-#else
- if ((sock_fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
-#endif
MS_DBG_STRERROR("socket failed");
return MS_MEDIA_ERR_SOCKET_CONN;
}
return MS_MEDIA_ERR_NONE;
}
-
-int
-#ifdef _USE_UDS_SOCKET_
-_ms_thumb_recv_udp_msg(int sock, int header_size, thumbMsg *msg, struct sockaddr_un *from_addr, unsigned int *from_size)
-#else
-_ms_thumb_recv_udp_msg(int sock, int header_size, thumbMsg *msg, struct sockaddr_in *from_addr, unsigned int *from_size)
-#endif
+int _ms_thumb_recv_udp_msg(int sock, int header_size, thumbMsg *msg, struct sockaddr_un *from_addr, unsigned int *from_size)
{
int recv_msg_len = 0;
-#ifdef _USE_UDS_SOCKET_
unsigned int from_addr_size = sizeof(struct sockaddr_un);
-#else
- unsigned int from_addr_size = sizeof(struct sockaddr_in);
-#endif
unsigned char *buf = NULL;
buf = (unsigned char*)malloc(sizeof(thumbMsg));
{
int sock;
const char *serv_ip = "127.0.0.1";
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un serv_addr;
-#else
- struct sockaddr_in serv_addr;
-#endif
-
int send_str_len = strlen(recv_msg->org_path);
if (send_str_len > MAX_MSG_SIZE) {
return FALSE;
}
-#if 0
- /* Creaete a datagram/UDP socket */
- if (_ms_thumb_create_udp_socket(&sock) < 0) {
- MS_DBG_ERR("_ms_thumb_create_udp_socket failed");
- return FALSE;
- }
-#endif
-#ifdef _USE_UDS_SOCKET_
if (ms_ipc_create_client_socket(MS_PROTOCOL_UDP, MS_TIMEOUT_SEC_10, &sock, MS_THUMB_DAEMON_PORT) < 0) {
-#else
- if (ms_ipc_create_client_socket(MS_PROTOCOL_UDP, MS_TIMEOUT_SEC_10, &sock) < 0) {
-#endif
MS_DBG_ERR("ms_ipc_create_client_socket failed");
return FALSE;
}
memset(&serv_addr, 0, sizeof(serv_addr));
-#ifdef _USE_UDS_SOCKET_
serv_addr.sun_family = AF_UNIX;
MS_DBG("%s", MEDIA_IPC_PATH[MS_THUMB_DAEMON_PORT]);
strcpy(serv_addr.sun_path, MEDIA_IPC_PATH[MS_THUMB_DAEMON_PORT]);
-#else
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_addr.s_addr = inet_addr(serv_ip);
- serv_addr.sin_port = htons(MS_THUMB_DAEMON_PORT);
-#endif
int buf_size = 0;
int header_size = 0;
MS_SAFE_FREE(buf);
MS_DBG_SLOG("Sending msg to thumbnail server is successful");
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un client_addr;
-#else
- struct sockaddr_in client_addr;
-#endif
unsigned int client_addr_len;
header_size = sizeof(thumbMsg) - MAX_MSG_SIZE*2;
MS_DBG("Timer is called.. Now killing media-thumbnail-server[%d]", g_server_pid);
if (g_server_pid > 0) {
-#if 0
- if (kill(g_server_pid, SIGKILL) < 0) {
- MS_DBG_ERR("kill failed : %s", strerror(errno));
- }
-#else
/* Kill thumbnail server */
thumbMsg msg;
thumbMsg recv_msg;
if (!_ms_thumb_agent_send_msg_to_thumb_server(&msg, &recv_msg)) {
MS_DBG_ERR("_ms_thumb_agent_send_msg_to_thumb_server is failed");
}
-#endif
+
usleep(200000);
} else {
MS_DBG_ERR("g_server_pid is %d. Maybe there's problem in thumbnail-server", g_server_pid);
GIOCondition condition,
gpointer data)
{
-#ifdef _USE_UDS_SOCKET_
struct sockaddr_un client_addr;
-#else
- struct sockaddr_in client_addr;
-#endif
unsigned int client_addr_len;
thumbMsg recv_msg;
GIOCondition condition,
gpointer data)
{
-#ifdef _USE_UDS_SOCKET_
- struct sockaddr_un client_addr;
-#elif defined(_USE_UDS_SOCKET_TCP_)
struct sockaddr_un client_addr;
-#else
- struct sockaddr_in client_addr;
-#endif
unsigned int client_addr_len;
-
thumbMsg *recv_msg = NULL;
int header_size = 0;
int sock = -1;
if (g_request_queue == NULL) {
MS_DBG_WARN("queue is init");
- g_request_queue = g_queue_new();
+ g_request_queue = g_queue_new();
}
if (g_queue_get_length(g_request_queue) >= MAX_THUMB_REQUEST) {
int sock;
unsigned short serv_port;
-#ifdef _USE_UDS_SOCKET_TCP_
- serv_port = MS_THUMB_CREATOR_TCP_PORT;
-#else
serv_port = MS_THUMB_CREATOR_PORT;
-#endif
-
-#if 0
-#ifdef _USE_UDS_SOCKET_
- struct sockaddr_un serv_addr;
-#else
- struct sockaddr_in serv_addr;
-#endif
-
- /* Create a TCP socket */
- if (_ms_thumb_create_socket(SERVER_SOCKET, &sock) < 0) {
- MS_DBG_ERR("_ms_thumb_create_socket failed");
- return FALSE;
- }
-
- memset(&serv_addr, 0, sizeof(serv_addr));
-#ifdef _USE_UDS_SOCKET_
- serv_addr.sun_family = AF_UNIX;
- strcpy(serv_addr.sun_path, MEDIA_IPC_PATH[serv_port]);
-#else
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
- serv_addr.sin_port = htons(serv_port);
-#endif
-
- /* Bind to the local address */
- if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
- MS_DBG_ERR("bind failed");
- return FALSE;
- }
-
- MS_DBG("bind success");
-
- /* Listening */
- if (listen(sock, SOMAXCONN) < 0) {
- MS_DBG_ERR("listen failed : %s", strerror(errno));
- return FALSE;
- }
-
- MS_DBG("Listening...");
-#endif
-#ifdef _USE_UDS_SOCKET_TCP_
- if (ms_ipc_create_server_tcp_socket(MS_PROTOCOL_TCP, serv_port, &sock) < 0) {
-#else
if (ms_ipc_create_server_socket(MS_PROTOCOL_TCP, serv_port, &sock) < 0) {
-#endif
MS_DBG_ERR("_ms_thumb_create_socket failed");
return FALSE;
}
MS_DBG_ERR("ms_ipc_create_server_socket failed");
return FALSE;
}
-#if 0
-#ifdef _USE_UDS_SOCKET_
- struct sockaddr_un serv_addr;
-#else
- struct sockaddr_in serv_addr;
-#endif
- /* Creaete a UDP socket */
- if (_ms_thumb_create_udp_socket(&sock) < 0) {
- MS_DBG_ERR("_ms_thumb_create_udp_socket failed");
- return FALSE;
- }
-
- memset(&serv_addr, 0, sizeof(serv_addr));
-#ifdef _USE_UDS_SOCKET_
- serv_addr.sun_family = AF_UNIX;
- strcpy(serv_addr.sun_path, MEDIA_IPC_PATH[serv_port]);
-#else
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
- serv_addr.sin_port = htons(serv_port);
-#endif
-
- /* Bind to the local address */
- if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
- MS_DBG_ERR("bind failed");
- return FALSE;
- }
-
- MS_DBG("bind success");
-#endif
g_communicate_sock = sock;
return TRUE;