Skip to main content

we_trust_postgres/
lib.rs

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