public void read(uint size, ReadFinishedFunc finished_func) { if (dropped || sendingHeaderError) { return; } lock (read_mutex) { if (read_callback != null) { throw new Exception("NOYOUBLO"); } read_callback = finished_func; if (size == 4) { read_buffer = length_buffer; } else { if (real_read_buffer == null || real_read_buffer.Length != size) { real_read_buffer = new byte[size]; } read_buffer = real_read_buffer; } read_size = size; read_filled = 0; transport.enableRead(); readTransport(); } }