Patch 7.4.1623
Problem: All Channels share the message ID, it keeps getting bigger.
Solution: Use a message ID per channel.
Files: src/channel.c, src/proto/channel.pro, src/structs.h
*** ../vim-7.4.1622/src/channel.c 2016-03-20 17:28:31.440893217 +0100
--- src/channel.c 2016-03-20 19:18:05.449533374 +0100
***************
*** 2295,2311 ****
}
/*
- * Return a unique ID to be used in a message.
- */
- int
- channel_get_id(void)
- {
- static int next_id = 1;
-
- return next_id++;
- }
-
- /*
* Read from channel "channel" for as long as there is something to read.
* "part" is PART_SOCK, PART_OUT or PART_ERR.
* The data is put in the read queue.
--- 2295,2300 ----
***************
*** 2787,2793 ****
return;
}
! id = channel_get_id();
text = json_encode_nr_expr(id, &argvars[1],
ch_mode == MODE_JS ? JSON_JS : 0);
if (text == NULL)
--- 2776,2782 ----
return;
}
! id = ++channel->ch_last_msg_id;
text = json_encode_nr_expr(id, &argvars[1],
ch_mode == MODE_JS ? JSON_JS : 0);
if (text == NULL)
*** ../vim-7.4.1622/src/proto/channel.pro 2016-03-14 23:27:25.256676749
+0100
--- src/proto/channel.pro 2016-03-20 19:30:54.517651723 +0100
***************
*** 24,33 ****
char_u *channel_peek(channel_T *channel, int part);
void channel_clear(channel_T *channel);
void channel_free_all(void);
- int channel_get_id(void);
void channel_read(channel_T *channel, int part, char *func);
char_u *channel_read_block(channel_T *channel, int part, int timeout);
! int channel_read_json_block(channel_T *channel, int part, int timeout, int
id, typval_T **rettv);
void common_channel_read(typval_T *argvars, typval_T *rettv, int raw);
channel_T *channel_fd2channel(sock_T fd, int *partp);
void channel_handle_events(void);
--- 24,32 ----
char_u *channel_peek(channel_T *channel, int part);
void channel_clear(channel_T *channel);
void channel_free_all(void);
void channel_read(channel_T *channel, int part, char *func);
char_u *channel_read_block(channel_T *channel, int part, int timeout);
! int channel_read_json_block(channel_T *channel, int part, int timeout_arg,
int id, typval_T **rettv);
void common_channel_read(typval_T *argvars, typval_T *rettv, int raw);
channel_T *channel_fd2channel(sock_T fd, int *partp);
void channel_handle_events(void);
*** ../vim-7.4.1622/src/structs.h 2016-03-20 16:40:33.214484441 +0100
--- src/structs.h 2016-03-20 19:18:12.649459631 +0100
***************
*** 1380,1385 ****
--- 1380,1386 ----
channel_T *ch_prev;
int ch_id; /* ID of the channel */
+ int ch_last_msg_id; /* ID of the last message */
chanpart_T ch_part[4]; /* info for socket, out, err and in */
*** ../vim-7.4.1622/src/version.c 2016-03-20 18:54:13.832174369 +0100
--- src/version.c 2016-03-20 19:29:05.098773614 +0100
***************
*** 750,751 ****
--- 750,753 ----
{ /* Add new patch number below this line */
+ /**/
+ 1623,
/**/
--
>From "know your smileys":
2B|^2B Message from Shakespeare
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.