35 #include <sys/types.h> 36 #include <sys/param.h> 37 #include <sys/socket.h> 38 #include <netinet/in.h> 39 #include <netinet/tcp.h> 40 #include <arpa/inet.h> 69 #define JAVASP_PING_LEN PATH_MAX 71 #define JAVASP_PRINT_ERR_MSG(...) \ 73 fprintf (stderr, __VA_ARGS__);\ 77 #define NULL_DEVICE "NUL:" 79 #define NULL_DEVICE "/dev/null" 105 FILE *redirect =
NULL;
109 FARPROC jsp_old_hook =
NULL;
132 std::string pathname;
140 if (command.compare (
"ping") != 0)
146 char er_msg_file[PATH_MAX];
147 snprintf (er_msg_file,
sizeof (er_msg_file) - 1,
"%s_java.err", db_name.c_str ());
154 if (status !=
NO_ERROR && command.compare (
"start") != 0)
156 char info_path[PATH_MAX], err_msg[PATH_MAX + 32];
158 snprintf (err_msg,
sizeof (err_msg),
"Error while opening file (%s)", info_path);
165 windows_socket_startup (jsp_old_hook);
171 if (command.compare (
"ping") == 0)
183 fprintf (stdout,
"%s", buffer);
187 fprintf (stdout,
"NO_CONNECTION");
200 if (command.compare (
"start") == 0)
205 char err_msg[PATH_MAX];
221 else if (command.compare (
"stop") == 0)
225 else if (command.compare (
"status") == 0)
237 windows_socket_shutdown (jsp_old_hook);
243 if (command.compare (
"ping") == 0)
247 fprintf (stdout,
"ERROR");
251 fprintf (stdout,
"NO_CONNECTION");
278 if (prm_port != jsp_info.
port)
281 check_port = jsp_info.
port;
286 check_port = prm_port;
295 #if !defined(WINDOWS) 313 char info_path[PATH_MAX], err_msg[PATH_MAX + 32];
315 snprintf (err_msg,
sizeof (err_msg),
"Error while writing to file: (%s)", info_path);
335 int req_size = (int)
sizeof (
int);
338 int stop_code = 0xFF;
339 nbytes =
jsp_writen (socket, (
void *) &stop_code, (
int)
sizeof (
int));
340 if (nbytes != (
int)
sizeof (
int))
375 int nbytes =
jsp_writen (socket, request, (
int)
sizeof (
int) * 2);
376 if (nbytes != (
int)
sizeof (
int) * 2)
384 nbytes =
jsp_readn (socket, (
char *) &res_size, (
int)
sizeof (
int));
385 if (nbytes != (
int)
sizeof (
int))
391 res_size =
ntohl (res_size);
393 buffer = (
char *) malloc (res_size);
400 nbytes =
jsp_readn (socket, buffer, res_size);
401 if (nbytes != res_size)
411 status_info.
pid = jsp_info.
pid;
415 for (
int i = 0;
i < num_args;
i++)
419 status_info.
vm_args.push_back (std::string (arg));
448 int nbytes =
jsp_writen (socket, request, (
int)
sizeof (
int) * 2);
449 if (nbytes != (
int)
sizeof (
int) * 2)
456 nbytes =
jsp_readn (socket, (
char *) &res_size, (
int)
sizeof (
int));
457 if (nbytes != (
int)
sizeof (
int))
462 res_size =
ntohl (res_size);
464 nbytes =
jsp_readn (socket, buf, res_size);
465 if (nbytes != res_size)
483 fprintf (fp,
"Java Stored Procedure Server (%s, pid %d, port %d)\n", status_info.
db_name, status_info.
pid,
485 auto vm_args_len = status_info.
vm_args.size();
488 fprintf (fp,
"Java VM arguments :\n");
489 fprintf (fp,
" -------------------------------------------------\n");
490 for (
int i = 0;
i < (int) vm_args_len;
i++)
492 fprintf (fp,
" %s\n", status_info.
vm_args[
i].c_str());
494 fprintf (fp,
" -------------------------------------------------\n");
506 if (db_name.compare (0, db_name.size (), buffer) == 0)
526 h_process = OpenProcess (PROCESS_QUERY_INFORMATION,
FALSE, pid);
527 if (h_process ==
NULL)
533 CloseHandle (h_process);
537 if (kill (pid, 0) == -1)
554 phandle = OpenProcess (PROCESS_TERMINATE,
FALSE, pid);
557 TerminateProcess (phandle, 0);
558 CloseHandle (phandle);
607 command.assign (argv[1]);
608 db_name.assign (argv[2]);
612 command.assign (
"start");
613 db_name.assign (argv[1]);
624 std::array<std::string, 5> commands = {
"start",
"stop",
"restart",
"status",
"ping"};
625 auto it = find (commands.begin(), commands.end(), command);
626 if (it == commands.end())
#define SLEEP_MILISEC(sec, msec)
DB_INFO * cfg_find_db(const char *db_name)
std::vector< std::string > vm_args
static int javasp_stop_server(const JAVASP_SERVER_INFO jsp_info, const std::string &db_name)
#define OR_ALIGNED_BUF(size)
static void javasp_terminate_process(int pid)
char * or_unpack_string_nocopy(char *ptr, char **string)
static bool javasp_is_running(const int server_port, const std::string &db_name)
bool javasp_read_info(const char *db_name, JAVASP_SERVER_INFO &info)
int er_init(const char *msglog_filename, int exit_ask)
#define ER_SP_NETWORK_ERROR
#define OR_ALIGNED_BUF_START(abuf)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
bool javasp_reset_info(const char *db_name)
int jsp_start_server(const char *db_name, const char *path, int port)
static void javasp_dump_status(FILE *fp, JAVASP_STATUS_INFO status_info)
void er_final(ER_FINAL_CODE do_global_final)
int prm_get_integer_value(PARAM_ID prm_id)
#define ER_SP_CANNOT_START_JVM
#define ER_OUT_OF_VIRTUAL_MEMORY
int sysprm_load_and_init(const char *db_name, const char *conf_file, const int load_flags)
static int javasp_get_server_info(const std::string &db_name, JAVASP_SERVER_INFO &info)
static int javasp_ping_server(const int server_port, char *buf)
const char * er_msg(void)
void jsp_disconnect_server(const SOCKET sockfd)
char * or_unpack_int(char *ptr, int *number)
int jsp_writen(SOCKET fd, const void *vptr, int n)
char * or_pack_int(char *ptr, int number)
static bool javasp_is_terminated_process(int pid)
static int javasp_check_database(const std::string &db_name, std::string &db_path)
#define free_and_init(ptr)
int main(int argc, char *argv[])
bool javasp_write_info(const char *db_name, JAVASP_SERVER_INFO info)
bool prm_get_bool_value(PARAM_ID prm_id)
SOCKET jsp_connect_server(int server_port)
int jsp_server_port(void)
bool javasp_get_info_file(char *buf, size_t len, const char *db_name)
const char * prm_get_name(PARAM_ID prm_id)
int jsp_readn(SOCKET fd, void *vptr, int n)
static int javasp_check_argument(int argc, char *argv[], std::string &command, std::string &db_name)
#define JAVASP_PRINT_ERR_MSG(...)
unsigned int ntohl(unsigned int from)
bool javasp_open_info_dir()
void cfg_free_directory(DB_INFO *databases)
static int javasp_status_server(const JAVASP_SERVER_INFO jsp_info)
SIGNAL_HANDLER_FUNCTION os_set_signal_handler(const int sig_no, SIGNAL_HANDLER_FUNCTION sig_handler)
static int javasp_start_server(const JAVASP_SERVER_INFO jsp_info, const std::string &db_name, const std::string &path)