4 * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
9 static char rcsid[] = "$Id$";
13 * Revision 1.2 2008/02/15 03:32:07 james
14 * *** empty log message ***
16 * Revision 1.1 2008/02/14 12:17:42 james
17 * *** empty log message ***
24 ipc_check_for_message_in_slide (Slide * s)
27 if (SLIDE_BYTES (s) < sizeof (IPC_Msg_hdr))
29 m = (IPC_Msg *) SLIDE_RPTR (s);
30 if (SLIDE_BYTES (s) < m->hdr.size)
32 if (m->hdr.size < sizeof (IPC_Msg_hdr))
39 ipc_consume_message_in_slide (Slide * s)
41 IPC_Msg *m = ipc_check_for_message_in_slide (s);
45 slide_consume (s, m->hdr.size);
50 ipc_msg_send (Socket * s, IPC_Msg * m)
52 int len = m->hdr.size;
53 return (socket_write (s, m, len) == len) ? 0 : -1;
58 ipc_msg_send_debug (Socket * s, char *msg)
60 char buf[sizeof (IPC_Msg_hdr) + IPC_MAX_BUF];
65 m = (IPC_Msg_debug *) buf;
66 m->type = IPC_MSG_TYPE_DEBUG;
67 strncpy (m->msg, msg, IPC_MAX_BUF);
68 m->msg[IPC_MAX_BUF - 1] = 0;
70 m->size = sizeof (IPC_Msg_hdr) + strlen (m->msg) + 1;
73 return ipc_msg_send (s, (IPC_Msg *) m);
77 ipc_msg_send_history (Socket * s, History_ent * l)
83 m.type = IPC_MSG_TYPE_HISTORY;
87 return ipc_msg_send (s, (IPC_Msg *) & m);
91 ipc_msg_send_vt102 (Socket * s, VT102 * v)
97 m.type = IPC_MSG_TYPE_VT102;
98 m.len = sizeof (VT102);
102 return ipc_msg_send (s, (IPC_Msg *) & m);
107 ipc_msg_send_key (Socket * s, int key)
112 m.type = IPC_MSG_TYPE_KEY;
114 return ipc_msg_send (s, (IPC_Msg *) & m);
120 ipc_msg_send_term (Socket * s, void *buf, int len)
122 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
124 IPC_Msg_term *m = (IPC_Msg_term *) mbuf;
129 m->size = len + sizeof (IPC_Msg_hdr);
130 m->type = IPC_MSG_TYPE_TERM;
132 memcpy (m->term, buf, len);
134 return ipc_msg_send (s, (IPC_Msg *) & m);
139 ipc_msg_send_status (Socket * s, char *buf)
141 char mbuf[IPC_MAX_BUF + sizeof (IPC_Msg_hdr)];
142 IPC_Msg_status *m = (IPC_Msg_status *) mbuf;
147 len = strlen (buf) + 1;
149 m->size = len + sizeof (IPC_Msg_hdr);
150 m->type = IPC_MSG_TYPE_STATUS;
151 strncpy (m->status, buf, IPC_MAX_BUF - 1);
152 m->status[IPC_MAX_BUF - 1] = 0;
154 return ipc_msg_send (s, (IPC_Msg *) & m);
159 ipc_msg_send_setbaud (Socket * s, int baud)
164 m.type = IPC_MSG_TYPE_SETBAUD;
166 return ipc_msg_send (s, (IPC_Msg *) & m);
171 ipc_msg_send_sendbreak (Socket * s)
176 m.type = IPC_MSG_TYPE_SENDBREAK;
177 return ipc_msg_send (s, (IPC_Msg *) & m);
182 ipc_msg_send_setflow (Socket * s, int flow)
187 m.type = IPC_MSG_TYPE_SETFLOW;
189 return ipc_msg_send (s, (IPC_Msg *) & m);