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
24pub 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 }
35 Err(e) => {
36 error!("Postgres protocol error: {}", e);
37 break;
38 }
39 }
40 }
41
42 Ok(())
43}