[C ++ Tutorial Lanjutan] Mengembangkan Kerangka Kerja Server dari Scratch (Sylar)
Mendukung gaya penulisan log dan memformat gaya penulisan log, mendukung kustomisasi format log, level log, pemisahan multi-log dan fungsi lainnya, penggunaan log streaming: Sylar_log_info (G_Logger) << "Ini adalah Log," Sylar_log_FMT); , level log, nama log, nama file, nomor baris, dll.
Mengadopsi gagasan konvensi karena konfigurasi. Definisi tersedia. Tidak perlu mengurai secara terpisah. Mendukung fungsi pemberitahuan perubahan. Gunakan file YAML sebagai konten konfigurasi. Mendukung tipe data dalam format level, mendukung wadah STL (vektor, daftar, set, peta, dll.), Mendukung tipe yang disesuaikan (membutuhkan serialisasi dan metode deserialisasi) sebagai berikut:
static sylar::ConfigVar< int >::ptr g_tcp_connect_timeout =
sylar::Config::Lookup ( " tcp.connect.timeout " , 5000 , " tcp connect timeout " );Parameter batas waktu koneksi TCP didefinisikan.
tcp:
connect:
timeout: 10000Modul utas merangkum beberapa fungsi yang umum digunakan dalam pthread, seperti utas, semaphore, mutex, rwmutex, spinlock, dll., Yang dapat memfasilitasi pengembangan utas untuk penggunaan sehari -hari. Mengapa utas dalam c ++ yang tidak berlaku untuk utasnya? Selain itu, C ++ 11 tidak memberikan mutex baca dan tulis, rwmutex, spinlock, dll., Dan dalam skenario konkurensi tinggi, objek -objek ini sering digunakan. Jadi saya memilih untuk merangkum pthread sendirian
Coroutine: Utas mode pengguna, setara dengan utas di utas, lebih ringan. Hook soket dikonfigurasi dalam konfigurasi selanjutnya, yang dapat merangkum panggilan asinkron kompleks ke dalam operasi sinkron. Kurangi kompleksitas penulisan logika bisnis. Saat ini, coroutine diimplementasikan berdasarkan UCONTEXT_T, dan akan diimplementasikan dengan cara berikutnya dengan menggunakan FContext_t di Boost.Context.
Penjadwal Coroutine mengelola penjadwalan coroutine dan diimplementasikan secara internal sebagai kumpulan utas, yang mendukung coroutine untuk beralih di antara beberapa utas, dan juga dapat menentukan bahwa coroutine dieksekusi dalam utas tetap. Ini adalah model penjadwalan NM Coroutine, dengan N Threads dan M coroutine. Gunakan kembali setiap utas.
Warisan dan penjadwal coroutine, merangkum Epoll (Linux), dan mendukung fungsi pengatur waktu (menggunakan Epoll untuk mengimplementasikan level timer, milidetik), dan mendukung penambahan, penghapusan dan pembatalan waktu baca dan tulis soket. Mendukung timer satu kali, pengatur waktu siklus, pengatur waktu dan fungsi lainnya
Sistem pengait yang mendasari dan API terkait soket, API terkait IO soket, dan API Sleep Series. Kontrol turn-on hook adalah granular utas. Pilihan Gratis. Melalui modul hook, beberapa API tanpa fungsi asinkron dapat digunakan untuk menunjukkan kinerja asinkron. Misalnya (mysql)
Merangkum kelas soket, menyediakan semua fungsi API soket, menyatukan kelas alamat, dan menyatukan alamat IPv4, IPv6, dan UNIX. Ini juga menyediakan nama domain dan fungsi resolusi IP.
Modul Serialisasi Biner ByTeArray menyediakan operasi umum pada data biner. Baca dan tulis tipe dasar int8_t, int16_t, int32_t, int64_t, dll., Dukungan varint, std :: string untuk membaca dan menulis dukungan, mendukung konversi byte, serialisasi dukungan ke file, dan deserialisasi dari file.
Berdasarkan kelas soket, ia merangkum kelas server TCPServer umum, menyediakan API sederhana, mudah digunakan, dan dapat dengan cepat mengikat satu atau lebih alamat, memulai layanan, mendengarkan port, menerima koneksi, menangani koneksi soket, dan fungsi lainnya. Implementasi server fungsi bisnis tertentu dapat diimplementasikan dengan cepat dengan mewarisi kelas ini.
Antarmuka Streaming Terpadu yang Dienkapsulasi. Merangkum file dan soket ke antarmuka terpadu. Saat menggunakannya, gunakan gaya terpadu. Berdasarkan gaya terpadu, itu dapat memberikan ekspansi yang lebih fleksibel. SocketStream saat ini diimplementasikan
Ragel (mesin negara hingga, kinerja yang sebanding dengan perakitan), mengimplementasikan implementasi protokol sederhana dari HTTP/1.1 dan penguraian URI. Berdasarkan SocketStream, HTTPConnection (HTTP Client) dan HTTPSession (tautan server HTTP) diimplementasikan. Httpserver diimplementasikan berdasarkan tcpserver. Menyediakan fungsi permintaan API klien HTTP lengkap dan fungsi server API dasar http
Mengikuti Java's Servlet, satu set antarmuka servlet diimplementasikan, ServletDispatch dan Functionservlet. NotfoundServlet. Mendukung pencocokan yang tepat, pencocokan fuzzy, dan fungsi lainnya. Bersama dengan modul HTTP, berikan fungsi server HTTP
Informasi Kontak: QQ: 564628276 Email: [email protected] WeChat: Sylar-Yin QQ Group: 8151915 (Sylar Technology Group) Beranda Pribadi: www.sylar.top Github: https://github.com/sylar--hin.