Skip to main content

we_trust_postgres/
lib.rs

1#![warn(missing_docs)]
2
3pub mod adapter;
4pub mod codec;
5pub mod connection;
6pub mod message;
7pub mod protocol;
8pub mod transaction;
9
10pub use adapter::PostgresAdapter;
11pub use codec::{BackendMessage, PgCodec, PgServerCodec};
12pub use connection::PostgresConnection;
13pub use message::Message;
14pub use transaction::PostgresTransaction;
15
16use futures::StreamExt;
17use tokio::net::TcpStream;
18use tokio_util::codec::Framed;
19use tracing::{error, info};
20use yykv_types::DsError;
21
22pub type Result<T> = std::result::Result<T, DsError>;
23
24/// 使用 tokio Framed 完全重写的 PostgreSQL 连接处理器
25pub async fn handle_connection(stream: TcpStream) -> Result<()> {
26    let mut framed = Framed::new(stream, PgServerCodec::new());
27    info!("New Postgres connection established");
28
29    while let Some(result) = framed.next().await {
30        match result {
31            Ok(msg) => {
32                info!("Received Postgres message: {:?}", msg);
33                // 处理认证、查询等
34            }
35            Err(e) => {
36                error!("Postgres protocol error: {}", e);
37                break;
38            }
39        }
40    }
41
42    Ok(())
43}