|
|
@@ -1,6 +1,6 @@
|
|
|
#include <memory>
|
|
|
#include <tuple>
|
|
|
-#include "src/basic_proto_dispatcher.hpp"
|
|
|
+#include "src/pico_server_dispatcher.hpp"
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
@@ -1311,7 +1311,7 @@ public:
|
|
|
|
|
|
int main()
|
|
|
{
|
|
|
- /*logger.enableConsoleOutput(true);
|
|
|
+ logger.enableConsoleOutput(true);
|
|
|
|
|
|
logger << "Open socket" << endl;
|
|
|
CPassiveSocket SocketPassive(CSimpleSocket::CSocketType::SocketTypeTcp);
|
|
|
@@ -1328,8 +1328,8 @@ int main()
|
|
|
|
|
|
logger << "Socket initialized!" << endl;
|
|
|
|
|
|
- CActiveSocket* ClientSocket;
|
|
|
- PicoLocalService* pico_service;
|
|
|
+ CActiveSocket* ClientSocket = nullptr;
|
|
|
+ pico_server_dispatcher pico_server(ClientSocket);
|
|
|
|
|
|
while(true)
|
|
|
{
|
|
|
@@ -1348,64 +1348,17 @@ int main()
|
|
|
|
|
|
logger.initializeLogger("picologs", "pico");
|
|
|
logger.enableConsoleOutput(true);
|
|
|
-
|
|
|
logger << LogPref::Flag(INFO) << "Client connected" << endl;
|
|
|
- pico_service = new PicoLocalService(ClientSocket);
|
|
|
|
|
|
- while(pico_service->get_request() != 0)
|
|
|
+ while(pico_server.acceptRequest() == true)
|
|
|
{
|
|
|
logger << LogPref::Flag(INFO) << "Request received" << endl;
|
|
|
}
|
|
|
|
|
|
logger << LogPref::Flag(INFO) << "Request processing finished" << endl;
|
|
|
- delete pico_service;
|
|
|
- pico_service = nullptr;
|
|
|
|
|
|
delete ClientSocket;
|
|
|
ClientSocket = nullptr;
|
|
|
- }*/
|
|
|
-
|
|
|
- // Сериализуем тестовые данные
|
|
|
- std::vector<int> vec = {1, 2, 3, 4, 5};
|
|
|
- std::map<std::string, int> mp = {{"one", 1}, {"two", 2}};
|
|
|
-
|
|
|
- msgpack::sbuffer sbuf;
|
|
|
- msgpack::packer pk(sbuf);
|
|
|
-
|
|
|
- pk.pack(vec);
|
|
|
- pk.pack(mp);
|
|
|
- pk.pack("dad");
|
|
|
-
|
|
|
- // Распаковка через unpacker
|
|
|
- msgpack::unpacker unp;
|
|
|
- unp.reserve_buffer(sbuf.size());
|
|
|
- std::copy(sbuf.data(), sbuf.data() + sbuf.size(), unp.buffer());
|
|
|
- unp.buffer_consumed(sbuf.size());
|
|
|
-
|
|
|
- msgpack::object_handle oh;
|
|
|
- while (unp.next(oh)) {
|
|
|
- msgpack::object obj = oh.get();
|
|
|
-
|
|
|
- // Определяем тип и обрабатываем
|
|
|
- switch (obj.type) {
|
|
|
- case msgpack::type::ARRAY: {
|
|
|
- auto arr = obj.as<std::vector<int>>();
|
|
|
- std::cout << "Massive: ";
|
|
|
- for (int x : arr) std::cout << x << ' ';
|
|
|
- std::cout << '\n';
|
|
|
- break;
|
|
|
- }
|
|
|
- case msgpack::type::MAP: {
|
|
|
- auto m = obj.as<std::map<std::string, int>>();
|
|
|
- std::cout << "Dict: \n";
|
|
|
- for (const auto& p : m) {
|
|
|
- std::cout << " " << p.first << " => " << p.second << '\n';
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- default:
|
|
|
- std::cout << "Other obj: " << obj << '\n';
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
return 0;
|