Menu

[r387]: / trunk / php-java-bridge / protocol.h  Maximize  Restore  History

Download this file

137 lines (112 with data), 4.5 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/*-*- mode: C; tab-width:4 -*-*/
/**\file
* Definitions for the protocol implementation.
*
* It defines the proxyenv structure and the communication channels.
* @see PROTOCOL.TXT
*/
#ifndef JAVA_PROTOCOL_H
#define JAVA_PROTOCOL_H
/* peer */
#include <stdio.h>
#ifdef __MINGW32__
# include <winsock2.h>
# define close closesocket
#else
# include <sys/types.h>
# include <sys/socket.h>
#endif
/*
* we create a unix domain socket with the name .php_java_bridge in
* the tmpdir
*/
#ifndef P_tmpdir
/* xopen, normally defined in stdio.h */
#define P_tmpdir "/tmp"
#endif
#define SOCKNAME P_tmpdir/**/"/.php_java_bridge"/**/"XXXXXX"
/* Linux: pipes created in the shared memory */
#define SOCKNAME_SHM "/dev/shm/.php_java_bridge"/**/"XXXXXX"
/*
* default log file is System.out
*/
#define LOGFILE ""
#define LOG_OFF 0
#define LOG_FATAL 1
#define LOG_ERROR 2 /* default level */
#define LOG_INFO 3
#define LOG_DEBUG 4
#define DEFAULT_LEVEL "2"
#define N_JAVA_SARGS 9
#define N_JAVA_SENV 3
#define N_MONO_SARGS 6
#define N_MONO_SENV 1
#define DEFAULT_MONO_PORT "9167" /* default port for tcp/ip */
#define DEFAULT_JAVA_PORT "9267" /* default port for tcp/ip */
#define DEFAULT_JAVA_WRAPPER EXTENSION_DIR/**/"/RunJavaBridge"
#define DEFAULT_MONO_WRAPPER EXTENSION_DIR/**/"/RunMonoBridge"
#define DEFAULT_HOST "127.0.0.1"
#define DEFAULT_SERVLET "/JavaBridge/JavaBridge.php"
#define RECV_SIZE 8192 // initial size of the receive buffer
#define MAX_ARGS 100 // max # of method arguments
/* checks if we use a servlet backend (re-directed or not) */
#define IS_SERVLET_BACKEND(env) (((*env)->servlet_ctx || EXT_GLOBAL (get_servlet_context) (TSRMLS_C)))
/* checks if the servlet backend uses HTTP, either because we do not
re-direct or because we override re-direct */
#define IS_OVERRIDE_REDIRECT(env) ((((*env)->peer0!=-1) || EXT_GLOBAL (get_servlet_context) (TSRMLS_C)))
typedef struct proxyenv_ *proxyenv;
struct proxyenv_ {
/* peer */
int peer, peerr, peer0; /* peer0 contains peer during override
redirect */
short peer_redirected; /* remains true during override
redirect */
struct sockaddr orig_peer_saddr; /* only valid if peer is a servlet, it
points to the original peer */
/* used by the parser implementation */
unsigned char*s; size_t len;
ssize_t pos, c;
unsigned char recv_buf[RECV_SIZE];
/* the send buffer */
unsigned char*send;
size_t send_len, send_size;
char *server_name;
/* local server (not a servlet engine) */
short is_local;
/* for servlets: re-open connection */
short must_reopen;
/* for servlet engines only */
char *servlet_ctx, *servlet_context_string;
short backend_has_session_proxy;
void (*handle_request)(proxyenv *env);
void (*writeCreateObjectBegin)(proxyenv *env, char*name, size_t strlen, char createInstance, void *result);
void (*writeCreateObjectEnd)(proxyenv *env);
void (*writeInvokeBegin)(proxyenv *env, long object, char*method, size_t strlen, char property, void* result);
void (*writeInvokeEnd)(proxyenv *env);
void (*writeResultBegin)(proxyenv *env, void* result);
void (*writeResultEnd)(proxyenv *env);
void (*writeGetMethodBegin)(proxyenv *env, long object, char*method, size_t strlen, void* result);
void (*writeGetMethodEnd)(proxyenv *env);
void (*writeCallMethodBegin)(proxyenv *env, long object, long method, void* result);
void (*writeCallMethodEnd)(proxyenv *env);
void (*writeString)(proxyenv *env, char*name, size_t strlen);
void (*writeBoolean)(proxyenv *env, short boolean);
void (*writeLong)(proxyenv *env, long l);
void (*writeDouble)(proxyenv *env, double d);
void (*writeObject)(proxyenv *env, long object);
void (*writeException)(proxyenv *env, long object, char*str, size_t len);
void (*writeCompositeBegin_a)(proxyenv *env);
void (*writeCompositeBegin_h)(proxyenv *env);
void (*writeCompositeEnd)(proxyenv *env);
void (*writePairBegin_s)(proxyenv *env, char*key, size_t strlen);
void (*writePairBegin_n)(proxyenv *env, unsigned long key);
void (*writePairBegin)(proxyenv *env);
void (*writePairEnd)(proxyenv *env);
void (*writeUnref)(proxyenv *env, long object);
void (*finish)(proxyenv *env);
ssize_t (*f_recv)(proxyenv*env, void *buf, size_t len);
ssize_t (*f_recv0)(proxyenv*env, void *buf, size_t len);
ssize_t (*f_send)(proxyenv*env, int peer, const void *buf, size_t len);
ssize_t (*f_send0)(proxyenv*env, int peer, const void *buf, size_t len);
};
#endif
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.