Warning: session_start(): open(/var/lib/php/sessions/sess_aj7s8194qk5h2vjildq7uno4aq, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
// We use big-endian as DataOutputStream does
sclass ByteHead /*is DataOutput*/ {
settable bool readMode;
settable bool writeMode;
settable InputStream inputStream;
settable OutputStream outputStream;
*() {}
*(InputStream *inputStream) { readMode(true); }
*(OutputStream *outputStream) { writeMode(true); }
void writeInt(int i) {
write(i >> 24);
write(i >> 16);
write(i >> 8);
write(i);
}
void writeShort(int i) {
write(i >> 8);
write(i);
}
void writeByte aka write(int i) ctex {
ensureWriteMode();
outputStream?.write(i);
}
int readInt() {
int i = read() << 24;
i |= read() << 16;
i |= read() << 8;
ret (short) (i | read());
}
short readShort() {
int i = read() << 8;
ret (short) (i | read());
}
// -1 for EOF
int readByte aka read() ctex {
ensureReadMode();
ret inputStream.read();
}
void ensureReadMode {
if (!readMode) fail("Not in read mode");
}
void ensureWriteMode {
if (!writeMode) fail("Not in write mode");
}
// exchange = read or write depending on mode
void exchangeShort(IF0 getter, IVF1 setter) {
if (writeMode())
writeShort(getter!);
if (readMode())
setter.get(readShort());
}
void exchangeInt(IF0 getter, IVF1 setter) {
if (writeMode())
writeInt(getter!);
if (readMode())
setter.get(readInt());
}
void exchange(ByteIO writable) {
writable.readWrite(this);
}
}