Skip to content

Sammo98/AMQP_RS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WORK IN PROGRESS

This repo holds, currently, a binary for testing out an implementation of the AMQ 0-9-1 protocol from scratch in Rust.

TODO:

  • Move to Bincode

  • Add Properties - Some weirdness with table only accepting long string as it's value, but it's there.

  • Convert to Lib

  • Sort out Tokio implementation - Have moved to channels which is going to be much nicer to deal with

  • Split pub/sub clients? Might have a lot of code reuse (although this will be mitigated by abstracting connection)

  • Work out how channel numbers are picked

  • Bundle Header and Ids - Remove frame end?

  • Abstract Connection out - This should interact with the TcpAdapter

  • Internal API improvements

    • Impl default for properties with useful information.
    • Bits? Is there a better way to handle this? (A:bool, B, ... ) -> Bits(vec![0u8, ...])?
    • impl From for encde types
    • Make all reserved constant 0_u16
    • Channel Handling - non-multiplexed for now
    • Combine Pub and consumer into client
    • Nicer interface for queue arguments. Put this in a struct with enums and a builder. Make queue name optional for auto gen rather than providing empty string, or provide auto gen enum
    • Add ExchangeDeclare Interface
    • Add bind interface
    • Try get rid of mut necessity, this comes from the tcp adapter receive
    • Add property like access for bit fields and table fields
    • Auto generate consumer tag - how to do without uuid
    • Table Builder
    • Error handling - impl From or thiserror
    • Tests
  • Add all Frames

    • Connection
    • Channel
    • Queue
    • Exchange
    • Basic
    • Transaction
  • Test all Frames

    • Connection
    • Channel
    • Queue
    • Exchange
    • Basic
    • Transaction
  • Start building out User API

    • Builder for Connection
    • Builder for Client
      • Client options?
    • Reply-to structure
      • Need to put the send message functionality in a nicer function. Shouldn't have to redeclare everything
    • Add a Handler trait to allow arbitrary types to implement it.
    • Ensure both high level api and lower level api for granular control is implemented.
    • Logging
    • Tests
    • Documentation
    • Ensure pub/private access is correct
    • Handle multi-queue consumer with queue:ConsumerTaskSender map
  • Try to figure out why the fuck we're not picking up messages which are already on the queue after basic.consume

  • Tests and Documentation for Public API

  • CI

  • Profit?

Future Features:

  • SSL

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages