Skip to content

Commit

Permalink
Add debugger function to set transport transmission sizes
Browse files Browse the repository at this point in the history
JerryScript-DCO-1.0-Signed-off-by: Jimmy Huang jimmy.huang@intel.com
  • Loading branch information
jimmy-huang committed Apr 10, 2018
1 parent 056b7f1 commit d3ed618
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 18 deletions.
23 changes: 23 additions & 0 deletions jerry-core/api/jerry-debugger.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,29 @@ jerry_debugger_init (jerry_debugger_transport_t *transport_p) /**< transport */
#endif /* JERRY_DEBUGGER */
} /* jerry_debugger_init */

/**
* Debugger transport transmission sizes, each transport will need to set these.
*/
void
jerry_debugger_set_transmit_sizes(size_t send_header_size, /**< transport send header size */
size_t max_send_size, /**< transport max send size */
size_t receive_header_size, /**< transport receive header size */
size_t max_receive_size) /**< transport max receive size */
{
#ifdef JERRY_DEBUGGER
JERRY_CONTEXT (debugger_send_header_size) = (uint8_t) send_header_size;
JERRY_CONTEXT (debugger_max_send_size) = (uint8_t) max_send_size;
JERRY_CONTEXT (debugger_receive_header_size) = (uint8_t) receive_header_size;
JERRY_CONTEXT (debugger_max_receive_size) = (uint8_t) max_receive_size;
#else /* !JERRY_DEBUGGER */
JERRY_UNUSED (send_header_size);
JERRY_UNUSED (max_send_size);
JERRY_UNUSED (receive_header_size);
JERRY_UNUSED (max_receive_size);
#endif /* JERRY_DEBUGGER */
}


/**
* Sets whether the engine should wait and run a source.
*
Expand Down
22 changes: 10 additions & 12 deletions jerry-core/debugger/debugger.c
Original file line number Diff line number Diff line change
Expand Up @@ -1071,24 +1071,22 @@ jerry_debugger_send_exception_string (void)
bool
jerry_debugger_accept_connection (void)
{
uint8_t *payload_p = JERRY_CONTEXT (debugger_send_buffer) + JERRY_CONTEXT (debugger_transport_p)->send_header_size;
uint8_t *payload_p = JERRY_CONTEXT (debugger_send_buffer) + JERRY_CONTEXT (debugger_send_header_size);
JERRY_CONTEXT (debugger_send_buffer_payload_p) = payload_p;

uint8_t max_send_size = (uint8_t) (JERRY_DEBUGGER_MAX_BUFFER_SIZE -
JERRY_CONTEXT (debugger_transport_p)->send_header_size);
if (max_send_size > JERRY_CONTEXT (debugger_transport_p)->max_message_size)
JERRY_CONTEXT (debugger_send_header_size));
if (max_send_size <= JERRY_CONTEXT (debugger_max_send_size))
{
max_send_size = JERRY_CONTEXT (debugger_transport_p)->max_message_size;
JERRY_CONTEXT (debugger_max_send_size) = max_send_size;
}
JERRY_CONTEXT (debugger_max_send_size) = max_send_size;

uint8_t max_receive_size = (uint8_t) (JERRY_DEBUGGER_MAX_BUFFER_SIZE -
JERRY_CONTEXT (debugger_transport_p)->receive_header_size);
if (max_receive_size > JERRY_CONTEXT (debugger_transport_p)->max_message_size)
JERRY_CONTEXT (debugger_receive_header_size));
if (max_receive_size <= JERRY_CONTEXT (debugger_max_send_size))
{
max_receive_size = JERRY_CONTEXT (debugger_transport_p)->max_message_size;
JERRY_CONTEXT (debugger_max_receive_size) = max_receive_size;
}
JERRY_CONTEXT (debugger_max_receive_size) = max_receive_size;

if (!JERRY_CONTEXT (debugger_transport_p)->accept_connection (JERRY_CONTEXT (debugger_transport_p)))
{
Expand Down Expand Up @@ -1180,7 +1178,7 @@ jerry_debugger_receive (jerry_debugger_uint8_data_t **message_data_p) /**< [out]
return true;
}

if (offset < JERRY_CONTEXT (debugger_transport_p)->receive_header_size)
if (offset < JERRY_CONTEXT (debugger_receive_header_size))
{
if (expected_message_type != 0)
{
Expand All @@ -1191,7 +1189,7 @@ jerry_debugger_receive (jerry_debugger_uint8_data_t **message_data_p) /**< [out]
}

uint32_t message_total_size = (uint32_t) (message_size +
JERRY_CONTEXT (debugger_transport_p)->receive_header_size);
JERRY_CONTEXT (debugger_receive_header_size));

if (offset < message_total_size)
{
Expand All @@ -1206,7 +1204,7 @@ jerry_debugger_receive (jerry_debugger_uint8_data_t **message_data_p) /**< [out]
/* The jerry_debugger_process_message function is inlined
* so passing these arguments is essentially free. */
if (!jerry_debugger_process_message (JERRY_CONTEXT (debugger_receive_buffer) +
JERRY_CONTEXT (debugger_transport_p)->receive_header_size,
JERRY_CONTEXT (debugger_receive_header_size),
(uint32_t) message_size,
&resume_exec,
&expected_message_type,
Expand Down
4 changes: 4 additions & 0 deletions jerry-core/include/jerryscript-debugger.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ typedef jerry_value_t (*jerry_debugger_wait_for_source_callback_t) (const jerry_
typedef struct jerry_debugger_transport_t jerry_debugger_transport_t;

void jerry_debugger_init (jerry_debugger_transport_t *transport_p);
void jerry_debugger_set_transmit_sizes(size_t send_header_size,
size_t max_send_size,
size_t receive_header_size,
size_t max_receive_size);
bool jerry_debugger_is_connected (void);
void jerry_debugger_stop (void);
void jerry_debugger_continue (void);
Expand Down
3 changes: 0 additions & 3 deletions jerry-core/include/jerryscript-port.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,6 @@ struct jerry_debugger_uint8_data_t;
*/
struct jerry_debugger_transport_t
{
uint8_t send_header_size;
uint8_t receive_header_size;
uint8_t max_message_size;
bool (*accept_connection) (struct jerry_debugger_transport_t *transport_p);
void (*close_connection) (struct jerry_debugger_transport_t *transport_p);
bool (*send) (struct jerry_debugger_transport_t *transport_p,
Expand Down
2 changes: 2 additions & 0 deletions jerry-core/jcontext/jcontext.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,8 @@ typedef struct
uint32_t debugger_flags; /**< debugger flags */
uint16_t debugger_receive_buffer_offset; /**< receive buffer offset */
uint8_t debugger_message_delay; /**< call receive message when reaches zero */
uint8_t debugger_send_header_size; /**< header size reserved when sending */
uint8_t debugger_receive_header_size; /**< header size reserved when receiving */
uint8_t debugger_max_send_size; /**< maximum amount of data that can be written */
uint8_t debugger_max_receive_size; /**< maximum amount of data that can be received */
jerry_debugger_transport_t *debugger_transport_p; /**< holds the pointer to the debugger transport */
Expand Down
7 changes: 4 additions & 3 deletions jerry-port/default/default-debugger-transport.c
Original file line number Diff line number Diff line change
Expand Up @@ -569,9 +569,6 @@ jerry_debugger_receive_ws (struct jerry_debugger_transport_t *transport_p, /**<

static struct jerry_debugger_transport_t socket_transport =
{
.send_header_size = JERRY_DEBUGGER_WEBSOCKET_HEADER_SIZE,
.receive_header_size = JERRY_DEBUGGER_WEBSOCKET_HEADER_SIZE + JERRY_DEBUGGER_WEBSOCKET_MASK_SIZE,
.max_message_size = JERRY_DEBUGGER_WEBSOCKET_ONE_BYTE_LEN_MAX,
.accept_connection = jerry_debugger_accept_connection_ws,
.close_connection = jerry_debugger_close_connection_ws,
.send = jerry_debugger_send_ws,
Expand All @@ -590,6 +587,10 @@ jerry_port_default_init_socket_transport (uint16_t tcp_port) /**< server port nu
{
#ifdef JERRY_DEBUGGER
debugger_port = tcp_port;
jerry_debugger_set_transmit_sizes(JERRY_DEBUGGER_WEBSOCKET_HEADER_SIZE,
JERRY_DEBUGGER_WEBSOCKET_ONE_BYTE_LEN_MAX,
JERRY_DEBUGGER_WEBSOCKET_HEADER_SIZE + JERRY_DEBUGGER_WEBSOCKET_MASK_SIZE,
JERRY_DEBUGGER_WEBSOCKET_ONE_BYTE_LEN_MAX);
return &socket_transport;
#else /* !JERRY_DEBUGGER */
JERRY_UNUSED (tcp_port);
Expand Down

0 comments on commit d3ed618

Please sign in to comment.