Lines Matching refs:stream

27 #include "stream.h"
39 commonInit(PacketOutputStream *stream)
41 stream->current = &stream->initialSegment[0];
42 stream->left = sizeof(stream->initialSegment);
43 stream->segment = &stream->firstSegment;
44 stream->segment->length = 0;
45 stream->segment->data = &stream->initialSegment[0];
46 stream->segment->next = NULL;
47 stream->error = JDWP_ERROR(NONE);
48 stream->sent = JNI_FALSE;
49 stream->ids = bagCreateBag(sizeof(jlong), INITIAL_ID_ALLOC);
50 if (stream->ids == NULL) {
51 stream->error = JDWP_ERROR(OUT_OF_MEMORY);
56 outStream_initCommand(PacketOutputStream *stream, jint id,
59 commonInit(stream);
64 stream->packet.type.cmd.id = id;
65 stream->packet.type.cmd.cmdSet = commandSet;
66 stream->packet.type.cmd.cmd = command;
68 stream->packet.type.cmd.flags = flags;
72 outStream_initReply(PacketOutputStream *stream, jint id)
74 commonInit(stream);
79 stream->packet.type.reply.id = id;
80 stream->packet.type.reply.errorCode = 0x0;
81 stream->packet.type.cmd.flags = (jbyte)JDWPTRANSPORT_FLAGS_REPLY;
85 outStream_id(PacketOutputStream *stream)
87 return stream->packet.type.cmd.id;
91 outStream_command(PacketOutputStream *stream)
94 JDI_ASSERT(!(stream->packet.type.cmd.flags & JDWPTRANSPORT_FLAGS_REPLY));
95 return stream->packet.type.cmd.cmd;
99 writeBytes(PacketOutputStream *stream, void *source, int size)
103 if (stream->error) {
104 return stream->error;
108 if (stream->left == 0) {
109 jint segSize = SMALLEST(2 * stream->segment->length, MAX_SEGMENT_SIZE);
115 stream->error = JDWP_ERROR(OUT_OF_MEMORY);
116 return stream->error;
121 stream->segment->next = newHeader;
122 stream->segment = newHeader;
123 stream->current = newHeader->data;
124 stream->left = segSize;
126 count = SMALLEST(size, stream->left);
127 (void)memcpy(stream->current, bytes, count);
128 stream->current += count;
129 stream->left -= count;
130 stream->segment->length += count;
138 outStream_writeBoolean(PacketOutputStream *stream, jboolean val)
141 return writeBytes(stream, &byte, sizeof(byte));
145 outStream_writeByte(PacketOutputStream *stream, jbyte val)
147 return writeBytes(stream, &val, sizeof(val));
151 outStream_writeChar(PacketOutputStream *stream, jchar val)
154 return writeBytes(stream, &val, sizeof(val));
158 outStream_writeShort(PacketOutputStream *stream, jshort val)
161 return writeBytes(stream, &val, sizeof(val));
165 outStream_writeInt(PacketOutputStream *stream, jint val)
168 return writeBytes(stream, &val, sizeof(val));
172 outStream_writeLong(PacketOutputStream *stream, jlong val)
175 return writeBytes(stream, &val, sizeof(val));
179 outStream_writeFloat(PacketOutputStream *stream, jfloat val)
182 return writeBytes(stream, &val, sizeof(val));
186 outStream_writeDouble(PacketOutputStream *stream, jdouble val)
189 return writeBytes(stream, &val, sizeof(val));
193 outStream_writeObjectTag(JNIEnv *env, PacketOutputStream *stream, jobject val)
195 return outStream_writeByte(stream, specificTypeKey(env, val));
199 outStream_writeObjectRef(JNIEnv *env, PacketOutputStream *stream, jobject val)
204 if (stream->error) {
205 return stream->error;
214 stream->error = JDWP_ERROR(OUT_OF_MEMORY);
215 return stream->error;
219 idPtr = bagAdd(stream->ids);
222 stream->error = JDWP_ERROR(OUT_OF_MEMORY);
223 return stream->error;
228 /* Add the encoded object id to the stream */
232 return writeBytes(stream, &id, sizeof(id));
236 outStream_writeFrameID(PacketOutputStream *stream, FrameID val)
244 return outStream_writeLong(stream, (jlong)val);
247 return outStream_writeInt(stream, (jint)val);
252 outStream_writeMethodID(PacketOutputStream *stream, jmethodID val)
260 return outStream_writeLong(stream, (jlong)(intptr_t)val);
263 return outStream_writeInt(stream, (jint)(intptr_t)val);
268 outStream_writeFieldID(PacketOutputStream *stream, jfieldID val)
276 return outStream_writeLong(stream, (jlong)(intptr_t)val);
279 return outStream_writeInt(stream, (jint)(intptr_t)val);
284 outStream_writeLocation(PacketOutputStream *stream, jlocation val)
286 return outStream_writeLong(stream, (jlong)val);
290 outStream_writeByteArray(PacketOutputStream*stream, jint length,
293 (void)outStream_writeInt(stream, length);
294 return writeBytes(stream, bytes, length);
298 outStream_writeString(PacketOutputStream *stream, char *string)
306 (void)outStream_writeInt(stream, length);
307 error = writeBytes(stream, (jbyte *)string, length);
315 (void)outStream_writeInt(stream, length);
316 error = writeBytes(stream, (jbyte *)string, length);
324 (void)outStream_writeInt(stream, new_length);
325 error = writeBytes(stream, (jbyte *)new_string, new_length);
382 outStream_skipBytes(PacketOutputStream *stream, jint count)
386 (void)outStream_writeByte(stream, 0);
388 return stream->error;
392 outStream_error(PacketOutputStream *stream)
394 return stream->error;
398 outStream_setError(PacketOutputStream *stream, jdwpError error)
400 if (stream->error == JDWP_ERROR(NONE)) {
401 stream->error = error;
407 outStream_send(PacketOutputStream *stream) {
418 if (stream->firstSegment.next == NULL) {
419 stream->packet.type.cmd.len = 11 + stream->firstSegment.length;
420 stream->packet.type.cmd.data = stream->firstSegment.data;
421 rc = transport_sendPacket(&stream->packet);
429 segment = (PacketData *)&(stream->firstSegment);
441 segment = (PacketData *)&(stream->firstSegment);
448 stream->packet.type.cmd.len = 11 + len;
449 stream->packet.type.cmd.data = data;
450 rc = transport_sendPacket(&stream->packet);
451 stream->packet.type.cmd.data = NULL;
458 outStream_sendReply(PacketOutputStream *stream)
461 if (stream->error) {
463 * Don't send any collected stream data on an error reply
465 stream->packet.type.reply.len = 0;
466 stream->packet.type.reply.errorCode = (jshort)stream->error;
468 rc = outStream_send(stream);
470 stream->sent = JNI_TRUE;
475 outStream_sendCommand(PacketOutputStream *stream)
478 if (!stream->error) {
479 rc = outStream_send(stream);
481 stream->sent = JNI_TRUE;
496 outStream_destroy(PacketOutputStream *stream)
500 if (stream->error || !stream->sent) {
501 (void)bagEnumerateOver(stream->ids, releaseID, NULL);
504 next = stream->firstSegment.next;
511 bagDestroyBag(stream->ids);