MCPcopy Create free account
hub / github.com/jetlang/remoting / Frame

Class Frame

src/main/java/org/jetlang/web/WebSocketReader.java:125–187  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

123 }
124
125 private class Frame implements NioReader.State {
126
127 private ContentType t;
128 private boolean fin;
129 private boolean isFragment;
130
131 private NioReader.State init(ContentType t, boolean fin, boolean isFragment) {
132 if (t != null && !fin && !t.canBeFragmented) {
133 return closeOnError(t + " cannot be fragmented.");
134 }
135 this.t = t;
136 this.fin = fin;
137 this.isFragment = isFragment;
138 return this;
139 }
140
141 @Override
142 public NioReader.State processBytes(ByteBuffer bb) {
143 byte b = bb.get();
144 final int size = (byte) (0x7F & b);
145 final boolean frameMasked = (b & 0x80) != 0;
146 if (size >= 0 && size <= 125) {
147 return bodyReadinit(size, t, fin, isFragment, frameMasked);
148 }
149 if (t != null && !t.canBeFragmented) {
150 return closeOnError(t + " Max Size of 125.");
151 }
152 if (size == 126) {
153 return new NioReader.State() {
154 @Override
155 public int minRequiredBytes() {
156 return 2;
157 }
158
159 @Override
160 public NioReader.State processBytes(ByteBuffer bb) {
161 int size = ((bb.get() & 0xFF) << 8) + (bb.get() & 0xFF);
162 return bodyReadinit(size, t, fin, isFragment, frameMasked);
163 }
164 };
165 }
166 if (size == 127) {
167 return new NioReader.State() {
168 @Override
169 public int minRequiredBytes() {
170 return 8;
171 }
172
173 @Override
174 public NioReader.State processBytes(ByteBuffer bb) {
175 return bodyReadinit((int) bb.getLong(), t, fin, isFragment, frameMasked);
176 }
177 };
178 }
179 handler.onError(connection, state, "Unsupported size: " + size);
180 return createClose();
181 }
182

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…