/** Write okhttp's settings to the peer. */ public synchronized void settings(Settings settings) throws IOException { if (closed) throw new IOException("closed"); int length = settings.size() * 6; byte type = TYPE_SETTINGS; byte flags = FLAG_NONE; int streamId = 0; frameHeader(streamId, length, type, flags); for (int i = 0; i < Settings.COUNT; i++) { if (!settings.isSet(i)) continue; int id = i; if (id == 4) { id = 3; // SETTINGS_MAX_CONCURRENT_STREAMS renumbered. } else if (id == 7) { id = 4; // SETTINGS_INITIAL_WINDOW_SIZE renumbered. } sink.writeShort(id); sink.writeInt(settings.get(i)); } sink.flush(); }
@Test public void writeShort() throws Exception { sink.writeShort(0xabcd); sink.writeShort(0x4321); sink.flush(); assertEquals("[hex=abcd4321]", data.toString()); }
/** Write okhttp's settings to the peer. */ public synchronized void settings(Settings settings) throws IOException { if (closed) throw new IOException("closed"); int length = settings.size() * 6; byte type = TYPE_SETTINGS; byte flags = FLAG_NONE; int streamId = 0; frameHeader(streamId, length, type, flags); for (int i = 0; i < Settings.COUNT; i++) { if (!settings.isSet(i)) continue; int id = i; if (id == 4) { id = 3; // SETTINGS_MAX_CONCURRENT_STREAMS renumbered. } else if (id == 7) { id = 4; // SETTINGS_INITIAL_WINDOW_SIZE renumbered. } sink.writeShort(id); sink.writeInt(settings.get(i)); } sink.flush(); }
.writeByte(ADDRESS_TYPE_IPV4) .write(localAddress) .writeShort(toSocket.getLocalPort()) .emit();
@Test public void readShortTooShortThrows() throws IOException { sink.writeShort(Short.MAX_VALUE); sink.emit(); source.readByte(); try { source.readShort(); fail(); } catch (EOFException expected) { } }
@Override public synchronized void settings(Settings settings) throws IOException { if (closed) throw new IOException("closed"); int length = settings.size() * 6; byte type = TYPE_SETTINGS; byte flags = FLAG_NONE; int streamId = 0; frameHeader(streamId, length, type, flags); for (int i = 0; i < Settings.COUNT; i++) { if (!settings.isSet(i)) continue; int id = i; if (id == 4) id = 3; // SETTINGS_MAX_CONCURRENT_STREAMS renumbered. else if (id == 7) id = 4; // SETTINGS_INITIAL_WINDOW_SIZE renumbered. sink.writeShort(id); sink.writeInt(settings.get(i)); } sink.flush(); }
@Override public synchronized void settings(Settings settings) throws IOException { if (closed) throw new IOException("closed"); int length = settings.size() * 6; byte type = TYPE_SETTINGS; byte flags = FLAG_NONE; int streamId = 0; frameHeader(streamId, length, type, flags); for (int i = 0; i < Settings.COUNT; i++) { if (!settings.isSet(i)) continue; int id = i; if (id == 4) id = 3; // SETTINGS_MAX_CONCURRENT_STREAMS renumbered. else if (id == 7) id = 4; // SETTINGS_INITIAL_WINDOW_SIZE renumbered. sink.writeShort(id); sink.writeInt(settings.get(i)); } sink.flush(); }
/** Write okhttp's settings to the peer. */ public synchronized void settings(Settings settings) throws IOException { if (closed) throw new IOException("closed"); int length = settings.size() * 6; byte type = TYPE_SETTINGS; byte flags = FLAG_NONE; int streamId = 0; frameHeader(streamId, length, type, flags); for (int i = 0; i < Settings.COUNT; i++) { if (!settings.isSet(i)) continue; int id = i; if (id == 4) { id = 3; // SETTINGS_MAX_CONCURRENT_STREAMS renumbered. } else if (id == 7) { id = 4; // SETTINGS_INITIAL_WINDOW_SIZE renumbered. } sink.writeShort(id); sink.writeInt(settings.get(i)); } sink.flush(); }
@Override public synchronized void settings(Settings settings) throws IOException { if (closed) throw new IOException("closed"); int length = settings.size() * 6; byte type = TYPE_SETTINGS; byte flags = FLAG_NONE; int streamId = 0; frameHeader(streamId, length, type, flags); for (int i = 0; i < Settings.COUNT; i++) { if (!settings.isSet(i)) continue; int id = i; if (id == 4) { id = 3; // SETTINGS_MAX_CONCURRENT_STREAMS renumbered. } else if (id == 7) { id = 4; // SETTINGS_INITIAL_WINDOW_SIZE renumbered. } sink.writeShort(id); sink.writeInt(settings.get(i)); } sink.flush(); }
/** Write okhttp's settings to the peer. */ public synchronized void settings(Settings settings) throws IOException { if (closed) throw new IOException("closed"); int length = settings.size() * 6; byte type = TYPE_SETTINGS; byte flags = FLAG_NONE; int streamId = 0; frameHeader(streamId, length, type, flags); for (int i = 0; i < Settings.COUNT; i++) { if (!settings.isSet(i)) continue; int id = i; if (id == 4) { id = 3; // SETTINGS_MAX_CONCURRENT_STREAMS renumbered. } else if (id == 7) { id = 4; // SETTINGS_INITIAL_WINDOW_SIZE renumbered. } sink.writeShort(id); sink.writeInt(settings.get(i)); } sink.flush(); }
b1 |= PAYLOAD_SHORT; sink.writeByte(b1); sink.writeShort((int) byteCount); } else { b1 |= PAYLOAD_LONG;
@Override public synchronized void synStream(boolean outFinished, boolean inFinished, int streamId, int associatedStreamId, List<Header> headerBlock) throws IOException { if (closed) throw new IOException("closed"); writeNameValueBlockToBuffer(headerBlock); int length = (int) (10 + headerBlockBuffer.size()); int type = TYPE_SYN_STREAM; int flags = (outFinished ? FLAG_FIN : 0) | (inFinished ? FLAG_UNIDIRECTIONAL : 0); int unused = 0; sink.writeInt(0x80000000 | (VERSION & 0x7fff) << 16 | type & 0xffff); sink.writeInt((flags & 0xff) << 24 | length & 0xffffff); sink.writeInt(streamId & 0x7fffffff); sink.writeInt(associatedStreamId & 0x7fffffff); sink.writeShort((unused & 0x7) << 13 | (unused & 0x1f) << 8 | (unused & 0xff)); sink.writeAll(headerBlockBuffer); sink.flush(); }
@Override public synchronized void synStream(boolean outFinished, boolean inFinished, int streamId, int associatedStreamId, List<Header> headerBlock) throws IOException { if (closed) throw new IOException("closed"); writeNameValueBlockToBuffer(headerBlock); int length = (int) (10 + headerBlockBuffer.size()); int type = TYPE_SYN_STREAM; int flags = (outFinished ? FLAG_FIN : 0) | (inFinished ? FLAG_UNIDIRECTIONAL : 0); int unused = 0; sink.writeInt(0x80000000 | (VERSION & 0x7fff) << 16 | type & 0xffff); sink.writeInt((flags & 0xff) << 24 | length & 0xffffff); sink.writeInt(streamId & 0x7fffffff); sink.writeInt(associatedStreamId & 0x7fffffff); sink.writeShort((unused & 0x7) << 13 | (unused & 0x1f) << 8 | (unused & 0xff)); sink.writeAll(headerBlockBuffer); sink.flush(); }
@Override public synchronized void synStream(boolean outFinished, boolean inFinished, int streamId, int associatedStreamId, List<Header> headerBlock) throws IOException { if (closed) throw new IOException("closed"); writeNameValueBlockToBuffer(headerBlock); int length = (int) (10 + headerBlockBuffer.size()); int type = TYPE_SYN_STREAM; int flags = (outFinished ? FLAG_FIN : 0) | (inFinished ? FLAG_UNIDIRECTIONAL : 0); int unused = 0; sink.writeInt(0x80000000 | (VERSION & 0x7fff) << 16 | type & 0xffff); sink.writeInt((flags & 0xff) << 24 | length & 0xffffff); sink.writeInt(streamId & 0x7fffffff); sink.writeInt(associatedStreamId & 0x7fffffff); sink.writeShort((unused & 0x7) << 13 | (unused & 0x1f) << 8 | (unused & 0xff)); sink.writeAll(headerBlockBuffer); sink.flush(); }
b1 |= PAYLOAD_SHORT; sink.writeByte(b1); sink.writeShort((int) byteCount); } else { b1 |= PAYLOAD_LONG;
b1 |= PAYLOAD_SHORT; sink.writeByte(b1); sink.writeShort((int) byteCount); } else { b1 |= PAYLOAD_LONG;