mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-06 18:21:45 +00:00
* Create libp2p instance * Change logger to stdlog * test_connection initial commit * Add gossipsub test * Delete tests in network crate * Add test module * Clean tests * Remove dependency on discovery * Working publish between 2 nodes TODO: Publish should be called just once * Working 2 peer gossipsub test with additional events * Cleanup test * Add rpc test * Star topology discovery WIP * build_nodes builds and connects n nodes. Increase nodes in gossipsub test * Add unsubscribe method and expose reference to gossipsub object for gossipsub tests * Add gossipsub message forwarding test * Fix gossipsub forward test * Test improvements * Remove discovery tests * Simplify gossipsub forward test topology * Add helper functions for topology building * Clean up tests * Update naming to new network spec * Correct ssz encoding of protocol names * Further additions to network upgrade * Initial network spec update WIP * Temp commit * Builds one side of the streamed RPC responses * Temporary commit * Propagates streaming changes up into message handler * Intermediate network update * Partial update in upgrading to the new network spec * Update dependencies, remove redundant deps * Correct sync manager for block stream handling * Re-write of RPC handler, improves efficiency and corrects bugs * Stream termination update * Completed refactor of rpc handler * Remove crates * Correct compile issues associated with test merge * Build basic tests and testing structure for eth2-libp2p * Enhance RPC tests and add logging * Complete RPC testing framework and STATUS test * Decoding bug fixes, log improvements, stream test * Clean up RPC handler logging * Decoder bug fix, empty block stream test * Add BlocksByRoot RPC test * Add Goodbye RPC test * Syncing and stream handling bug fixes and performance improvements * Applies discv5 bug fixes * Adds DHT IP filtering for lighthouse - currently disabled * Adds randomized network propagation as a CLI arg * Add disconnect functionality * Adds attestation handling and parent lookup * Adds RPC error handling for the sync manager * Allow parent's blocks to be already processed * Update github workflow * Adds reviewer suggestions
63 lines
1.6 KiB
Rust
63 lines
1.6 KiB
Rust
pub(crate) mod base;
|
|
pub(crate) mod ssz;
|
|
|
|
use self::base::{BaseInboundCodec, BaseOutboundCodec};
|
|
use self::ssz::{SSZInboundCodec, SSZOutboundCodec};
|
|
use crate::rpc::protocol::RPCError;
|
|
use crate::rpc::{RPCErrorResponse, RPCRequest};
|
|
use libp2p::bytes::BytesMut;
|
|
use tokio::codec::{Decoder, Encoder};
|
|
|
|
// Known types of codecs
|
|
pub enum InboundCodec {
|
|
SSZ(BaseInboundCodec<SSZInboundCodec>),
|
|
}
|
|
|
|
pub enum OutboundCodec {
|
|
SSZ(BaseOutboundCodec<SSZOutboundCodec>),
|
|
}
|
|
|
|
impl Encoder for InboundCodec {
|
|
type Item = RPCErrorResponse;
|
|
type Error = RPCError;
|
|
|
|
fn encode(&mut self, item: Self::Item, dst: &mut BytesMut) -> Result<(), Self::Error> {
|
|
match self {
|
|
InboundCodec::SSZ(codec) => codec.encode(item, dst),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Decoder for InboundCodec {
|
|
type Item = RPCRequest;
|
|
type Error = RPCError;
|
|
|
|
fn decode(&mut self, src: &mut BytesMut) -> Result<Option<Self::Item>, Self::Error> {
|
|
match self {
|
|
InboundCodec::SSZ(codec) => codec.decode(src),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Encoder for OutboundCodec {
|
|
type Item = RPCRequest;
|
|
type Error = RPCError;
|
|
|
|
fn encode(&mut self, item: Self::Item, dst: &mut BytesMut) -> Result<(), Self::Error> {
|
|
match self {
|
|
OutboundCodec::SSZ(codec) => codec.encode(item, dst),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Decoder for OutboundCodec {
|
|
type Item = RPCErrorResponse;
|
|
type Error = RPCError;
|
|
|
|
fn decode(&mut self, src: &mut BytesMut) -> Result<Option<Self::Item>, Self::Error> {
|
|
match self {
|
|
OutboundCodec::SSZ(codec) => codec.decode(src),
|
|
}
|
|
}
|
|
}
|