Commit 4b68033b authored by Cedric Roux's avatar Cedric Roux

some work for buffer handling

parent 1e20abdd
......@@ -36,10 +36,12 @@
#define T_PUT_buffer(argnum, val) \
do { \
T_buffer T_PUT_var = (val); \
T_CHECK_SIZE(T_PUT_var.length, argnum); \
memcpy(T_LOCAL_buf + T_LOCAL_size, T_PUT_var.addr, T_PUT_var.length); \
T_LOCAL_size += T_PUT_var.length; \
T_buffer T_PUT_buffer_var = (val); \
T_PUT_int(argnum, T_PUT_buffer_var.length); \
T_CHECK_SIZE(T_PUT_buffer_var.length, argnum); \
memcpy(T_LOCAL_buf + T_LOCAL_size, T_PUT_buffer_var.addr, \
T_PUT_buffer_var.length); \
T_LOCAL_size += T_PUT_buffer_var.length; \
} while (0)
#define T_PUT_string(argnum, val) \
......@@ -117,7 +119,7 @@ extern T_cache_t *T_cache;
T_send(T_LOCAL_buf, T_LOCAL_size)
#define T_CHECK_SIZE(len, argnum) \
if (T_LOCAL_size + len > T_BUFFER_MAX) { \
if (T_LOCAL_size + (len) > T_BUFFER_MAX) { \
printf("%s:%d:%s: cannot put argument %d in T macro, not enough space" \
", consider increasing T_BUFFER_MAX (%d)\n", \
__FILE__, __LINE__, __FUNCTION__, argnum, T_BUFFER_MAX); \
......
......@@ -138,3 +138,4 @@ ID = LEGACY_CLI_DEBUG
ID = LEGACY_CLI_TRACE
ID = first
ID = buf_test
......@@ -10,8 +10,10 @@ int main(void)
T_connect_to_tracer("127.0.0.1", 2020);
printf("after connect\n");
while (1) {
T(T_first, T_PRINTF("hello world %s!\n", "yo"));
//usleep(1);
char *buf = "hello world %s!\n";
//T(T_first, T_PRINTF("hello world %s!\n", "yo"));
T(T_buf_test, T_BUFFER("hello world %s!\n", strlen(buf)+1));
usleep(1);
}
while (1) pause();
......
......@@ -73,7 +73,7 @@ void get_string(int s, char *out)
void get_message(int s)
{
#define S(x, y) do { \
char str[1024]; \
char str[T_BUFFER_MAX]; \
get_string(s, str); \
printf("["x"]["y"] %s", str); \
} while (0)
......@@ -85,7 +85,7 @@ void get_message(int s)
if (GET(s, &m, sizeof(int)) != sizeof(int)) abort();
switch (m) {
case T_first: {
char str[1024];
char str[T_BUFFER_MAX];
get_string(s, str);
printf("%s", str);
break;
......@@ -195,6 +195,15 @@ void get_message(int s)
case T_LEGACY_CLI_WARNING: S("CLI", "WARNING"); break;
case T_LEGACY_CLI_DEBUG: S("CLI", "DEBUG"); break;
case T_LEGACY_CLI_TRACE: S("CLI", "TRACE"); break;
case T_buf_test: {
unsigned char buf[T_BUFFER_MAX];
int size;
GET(s, &size, sizeof(int));
GET(s, buf, size);
printf("got buffer size %d %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x %2.2x\n",
size, buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9],buf[10],buf[11],buf[12],buf[13],buf[14],buf[15]);
break;
}
default: printf("unkown message type %d\n", m); abort();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment