Code Monkey home page Code Monkey logo

nassau's People

Contributors

dependabot[bot] avatar jansturenielsen avatar jvirtanen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nassau's Issues

Expose end-of-stream in BinaryFILE reader

The BinaryFILE reader should expose the end-of-stream. This could be achieved by changing the read method to return the number of bytes read, possibly zero, or -1 if the it has reached the end-of-stream.

Session parameter in status listener

Add a client parameter to MoldUDP64ClientStatusListener and SoupBinTCPClientStatusListener and a server parameter to SoupBinTCPServerStatusListener. An example:

void state(MoldUDP64Client client, MoldUDP64ClientState next);

Use separate MoldUDP64 request channel

The MoldUDP64 client uses the same channel for receiving downstream packets and sending request packets. While this works fine, it means that no more than one client instance listening to a particular session can be running on a host at a time. (This is because the source UDP port in request packets from all client instances equals the multicast UDP port. All downstream packets sent as unicast datagrams in response to request packets are always forwarded by the operating system to one of the many sockets bound to the multicast UDP port.)

The MoldUDP64 client should use a separate channel for sending request packets.

Request for Pcap test data.

Hi,
I came across this repo which searching for pcap files for different exchange protocols (MoldUDP64, SoupBINTCP, ITCH, OUCH etc)
In case you have tcpdump's for these protocols can you please share them.
Regards
Vijay

Eliminate coordinated omission

Nassau SoupBinTCP Performance Test is currently implemented in such a a way that the next packet is sent out right after receiving the previous packet. This is wrong and known as coordinated omission, because it does not take into account the adverse effect long processing time of one packet would have on subsequent packets in the real world.

Eliminate coordinated omission by sending packets at regular intervals.

Fix MoldUDP64 client state handling

The MoldUDP64 client goes to the SYNCHRONIZED state as soon as it receives a downstream packet with a sequence number no greater than expected. It should actually track the highest received sequence number and stay in the BACKFILL or GAP_FILL state until the expected sequence number is greater than the highest received sequence number.

Split Nassau SoupBinTCP Performance Test

Nassau SoupBinTCP Performance Test is a multithreaded application that runs a SoupBinTCP client on one thread and a SoupBinTCP server on another. While it can be used to measure the round-trip time (RTT) over the loopback interface, it would be beneficial to be able to run the endpoints on different hosts.

In the spirit of Philadelphia's Philadelphia Test Acceptor and Philadelphia Test Initiator the application could be split into Nassau SoupBinTCP Test Client and Nassau SoupBinTCP Test Server and placed in an examples directory:

examples/soupbintcp-client
examples/soupbintcp-server

New Release

Hi,

Do you have an estimate on when a new version will be released to Maven Central?

Thanks
Ed

Faster MoldUDP64 gap fill

The MoldUDP64 client should keep track of the highest sequence number received and, as soon as it receives a downstream packet, send a request packet if the highest sequence number has not yet been reached sequentially.

Currently the MoldUDP64 client sends a request packet if it receives a downstream packet with higher than expected initial sequence number.

Expose MoldUDP64 client state

The MoldUDP64 client should expose its state to the application. The state could be represented by the following enumeration:

  • BACKFILL
  • SYNCHRONIZED
  • GAP_FILL

The client would be initially in the BACKFILL state. As soon as it reaches synchronization with the MoldUDP64 server, it goes to the SYNCHRONIZED state. Should it fall out of synchronization with the server while in the SYNCHRONIZED state, it goes to the GAP_FILL state until it regains synchronization.

Block allocation in default MoldUDP64 message store is slow

The default MoldUDP64 message store uses blocks comprising of byte arrays for message storage. The default block size is 64 MB.

Allocating a byte array of 64 MB is slow. Much smaller byte arrays or alternative techniques, such as off-heap memory, should be investigated.

Minimum SoupBinTCP receive buffer size

At the moment it is possible to set the SoupBinTCP receive buffer size to a value lower than the length of, for example, the Login Request packet. Fix this by setting a lower bound for the parameter.

More Native Protocols

Leveraging from some of the other projects you have been involved in is it possible to add more native protocols.

SSL Connectivity

How can i use this to talk to an SSL SoupBinTCP Server ? tried and i'm getting a connection refused/reset error

Improve Travis configuration

It looks like there is a way to configure JDK 10 or later for Travis using a tool called install-jdk.sh. It would be good to amend the Travis configuration to contain the following JDKs:

  • Oracle JDK 8
  • OpenJDK 11

Note. Oracle JDK 9 and Oracle JDK 10 have reached end-of-life earlier this year. At the moment OpenJDK 11 does not work due to #52.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.