4 * Copyright (c) 2008 James McKenzie <sympathy@madingley.org>,
9 static char rcsid[] = "$Id: ipc.c,v 1.11 2008/03/07 14:13:40 james Exp $";
13 * Revision 1.11 2008/03/07 14:13:40 james
14 * *** empty log message ***
16 * Revision 1.10 2008/03/07 13:16:02 james
17 * *** empty log message ***
19 * Revision 1.9 2008/03/07 12:37:04 james
20 * *** empty log message ***
22 * Revision 1.8 2008/03/03 18:16:16 james
23 * *** empty log message ***
25 * Revision 1.7 2008/03/03 18:15:19 james
26 * *** empty log message ***
28 * Revision 1.6 2008/02/28 16:57:51 james
29 * *** empty log message ***
31 * Revision 1.5 2008/02/28 11:27:48 james
32 * *** empty log message ***
34 * Revision 1.4 2008/02/22 17:07:00 james
35 * *** empty log message ***
37 * Revision 1.3 2008/02/15 23:52:12 james
38 * *** empty log message ***
40 * Revision 1.2 2008/02/15 03:32:07 james
41 * *** empty log message ***
43 * Revision 1.1 2008/02/14 12:17:42 james
44 * *** empty log message ***
51 ipc_check_for_message_in_slide (Slide * s)
54 if (SLIDE_BYTES (s) < sizeof (IPC_Msg_hdr))
56 m = (IPC_Msg *) SLIDE_RPTR (s);
57 if (SLIDE_BYTES (s) < m->hdr.size)
59 if (m->hdr.size < sizeof (IPC_Msg_hdr))
60 crash_out ("ipc_check_for_message_in_slide test failed");
66 ipc_consume_message_in_slide (Slide * s)
68 IPC_Msg *m = ipc_check_for_message_in_slide (s);
70 crash_out ("ipc_consume_message_in_slide test failed");
72 slide_consume (s, m->hdr.size);
77 ipc_msg_send (Socket * s, IPC_Msg * m)
79 int len = m->hdr.size;
80 return (socket_write (s, m, len) == len) ? 0 : -1;
85 ipc_msg_send_debug (Socket * s, char *msg)
87 char buf[sizeof (IPC_Msg_hdr) + IPC_MAX_BUF];
92 m = (IPC_Msg_debug *) buf;
93 m->type = IPC_MSG_TYPE_DEBUG;
94 strncpy (m->msg, msg, IPC_MAX_BUF);
95 m->msg[IPC_MAX_BUF - 1] = 0;
97 m->size = sizeof (IPC_Msg_hdr) + strlen (m->msg) + 1;
100 return ipc_msg_send (s, (IPC_Msg *) m);
104 ipc_msg_send_initialize (Socket * s)
106 IPC_Msg_initialize m;
109 m.type = IPC_MSG_TYPE_INITIALIZE;
110 return ipc_msg_send (s, (IPC_Msg *) & m);
114 ipc_msg_send_history (Socket * s, History_ent * l)
120 m.type = IPC_MSG_TYPE_HISTORY;
124 return ipc_msg_send (s, (IPC_Msg *) & m);
128 ipc_msg_send_vt102 (Socket * s, VT102 * v)
134 m.type = IPC_MSG_TYPE_VT102;
135 m.len = sizeof (VT102);
139 return ipc_msg_send (s, (IPC_Msg *) & m);
144 ipc_msg_send_key (Socket * s, int key)
149 m.type = IPC_MSG_TYPE_KEY;
151 return ipc_msg_send (s, (IPC_Msg *) & m);
157 ipc_msg_send_term (Socket * s, void *buf, int len)
159 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
161 IPC_Msg_term *m = (IPC_Msg_term *) mbuf;
166 m->size = len + sizeof (IPC_Msg_hdr);
167 m->type = IPC_MSG_TYPE_TERM;
169 memcpy (m->term, buf, len);
171 return ipc_msg_send (s, (IPC_Msg *) & m);
176 ipc_msg_send_status (Socket * s, char *buf)
178 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
179 IPC_Msg_status *m = (IPC_Msg_status *) mbuf;
184 len = strlen (buf) + 1;
186 m->size = len + sizeof (IPC_Msg_hdr);
187 m->type = IPC_MSG_TYPE_STATUS;
188 strncpy (m->status, buf, IPC_MAX_BUF - 1);
189 m->status[IPC_MAX_BUF - 1] = 0;
191 return ipc_msg_send (s, (IPC_Msg *) & m);
196 ipc_msg_send_setbaud (Socket * s, int baud)
201 m.type = IPC_MSG_TYPE_SETBAUD;
203 return ipc_msg_send (s, (IPC_Msg *) & m);
208 ipc_msg_send_sendbreak (Socket * s)
213 m.type = IPC_MSG_TYPE_SENDBREAK;
214 return ipc_msg_send (s, (IPC_Msg *) & m);
219 ipc_msg_send_setflow (Socket * s, int flow)
224 m.type = IPC_MSG_TYPE_SETFLOW;
226 return ipc_msg_send (s, (IPC_Msg *) & m);
230 ipc_msg_send_setansi (Socket * s, int ansi)
235 m.type = IPC_MSG_TYPE_SETANSI;
237 return ipc_msg_send (s, (IPC_Msg *) & m);
241 ipc_msg_send_hangup (Socket * s)
246 m.type = IPC_MSG_TYPE_HANGUP;
247 return ipc_msg_send (s, (IPC_Msg *) & m);
251 ipc_msg_send_setsize (Socket * s, CRT_Pos size)
256 m.type = IPC_MSG_TYPE_SETSIZE;
259 return ipc_msg_send (s, (IPC_Msg *) & m);
263 ipc_msg_send_reset (Socket * s)
268 m.type = IPC_MSG_TYPE_RESET;
269 return ipc_msg_send (s, (IPC_Msg *) & m);
273 ipc_msg_send_killme (Socket * s)
278 m.type = IPC_MSG_TYPE_KILLME;
279 return ipc_msg_send (s, (IPC_Msg *) & m);