new PIFile::readAll test
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
#include "pidir.h"
|
||||
#include "piincludes_p.h"
|
||||
#include "piiostream.h"
|
||||
#include "piliterals_bytes.h"
|
||||
#include "pitime_win.h"
|
||||
#include "pitranslator.h"
|
||||
#ifdef WINDOWS
|
||||
@@ -276,6 +277,21 @@ PIByteArray PIFile::readAll(bool forceRead) {
|
||||
}
|
||||
|
||||
|
||||
PIByteArray PIFile::_readAll() {
|
||||
if (!isOpened()) return {};
|
||||
llong prev_pos = pos();
|
||||
PIByteArray ret, buffer(4_KiB);
|
||||
seekToBegin();
|
||||
for (;;) {
|
||||
size_t readed = fread(buffer.data(), 1, buffer.size(), PRIVATE->fd);
|
||||
if (readed == 0) break;
|
||||
ret.append(buffer.data(), readed);
|
||||
}
|
||||
seek(prev_pos);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
llong PIFile::size() const {
|
||||
if (isClosed()) return -1;
|
||||
llong s, cp = pos();
|
||||
|
||||
@@ -227,6 +227,8 @@ public:
|
||||
//! \~russian Читает всё содержимое файла и возвращает его как массив байтов. Позиция остаётся неизменной
|
||||
PIByteArray readAll(bool forceRead = false);
|
||||
|
||||
PIByteArray _readAll();
|
||||
|
||||
|
||||
//! \~english Set file path to "path" and reopen file if need
|
||||
//! \~russian Устанавливает путь файла на "path" и переоткрывает его при необходимости
|
||||
|
||||
14
main.cpp
14
main.cpp
@@ -83,6 +83,14 @@ void piDeserializeJSON(S & v, const PIJSON & js) {
|
||||
PIKbdListener kbd;
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
if (argc < 2) return 0;
|
||||
PIFile f(argv[1], PIIODevice::ReadOnly);
|
||||
piCout << "read" << f.path();
|
||||
auto fc = f._readAll();
|
||||
piCout << fc.size() << PIString::fromUTF8(fc.resized(32));
|
||||
return 0;
|
||||
|
||||
|
||||
PIHTTPServer server;
|
||||
server.listen({"127.0.0.1:7777"});
|
||||
// server.setBasicAuthRealm("pip");
|
||||
@@ -102,11 +110,13 @@ int main(int argc, char * argv[]) {
|
||||
};
|
||||
// });
|
||||
|
||||
reg("/*/3/get");
|
||||
reg(" /*/a/get ");
|
||||
reg(" /*/{ID}/get ");
|
||||
reg(" /*/*/get ");
|
||||
reg(" /*/*_b/get ");
|
||||
|
||||
reg("/api/{ID}/get");
|
||||
reg("/api/1/get");
|
||||
server.unregisterPath("*/{ID}/get");
|
||||
// reg("/api/1/bort{bortID}/get");
|
||||
// reg("/api/**");
|
||||
// reg("/api/1/bort2/get");
|
||||
|
||||
Reference in New Issue
Block a user