Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Async Runtime #65

Merged
merged 88 commits into from
Jan 10, 2014
Merged

Async Runtime #65

merged 88 commits into from
Jan 10, 2014

Conversation

seliopou
Copy link
Collaborator

This pull request primarily introduces the new async-based runtime for ocaml-openflow. The async-based runtime will be the preferred runtime moving forward, with the Lwt-based runtime being removed from the repository and distribution before the next release. Once this branch is merged Lwt should be considered deprecated, and no new patches affecting that code will be accepted.

In addition, this pull request includes a custom Makefile, rather the one generated by oasis.

arjunguha and others added 30 commits December 26, 2013 16:22
This module was reimplemented in three different places.
These are now using OpenFlow_Header.
Eventually, remove all aliases to this type.
Added wrappers for 1.0, 1.3, and uninterpreted chunks. This allows the platform
to be instantiated with any of these protocols.
vim swap files
Do not bother creating any other .mli files. Instead, expose all new modules as
submodules of Async_OpenFlow. This keeps the module namespace tidy.
This signature is also useful when writing clients
- This is a lower level interface than Async_OpenFlow.Platform.
- Serialization code has been factored out of Platform, since it
  is shared by both.
See the comment at the end of test/Test.ml which explains the change.  Notice
that the test command in _oasis has also been updated.  I've changed
OpenFlow_Header to actully use core to demonstrate that make test doesn't hang.

@seliopou
Two simplifications:

- Message.marshal returns () instead of the number of bytes written.
  The length of the header specifies exactly how many bytes to write.
  In fact, we were ignoring the returned int everywhere.

- Message.marshal now only marshals the body. The generic portion of
  the serializer marshals the header. This makes it possible to convert
  between chunks and parsed messages. It is also more consistent, since
  deserialization does not parse the header.
I had not done --enable-async
arjunguha and others added 17 commits January 5, 2014 12:58
Based on the Cstruct Makefile:

https://github.com/avsm/ocaml-cstruct/blob/master/Makefile

Key features:

- "make clean" deletes setup.data, which is generated by configure
- make builds the async submodule if async is installed (and similarly for
  lwt and quickcheck)
Frenetic is enabling it just fine
I had a variable-shadowing bug in earlier code.
That info was already being printed at the DEBUG level. Move logging
down the next state, in which a message is received from a client with
an unknown state. (An error that should never happen.)
All modules are exposed through the Async_OpenFlow.mli file.
@adferguson
Copy link
Contributor

needs more commits.

seriously guys, I'm thrilled to see this. can't wait for the next steps. :-)

@ghost ghost assigned seliopou Jan 10, 2014
seliopou added a commit that referenced this pull request Jan 10, 2014
Conflicts:
	_oasis
	_tags
	setup.ml
@seliopou seliopou merged commit b377b8a into master Jan 10, 2014
@arjunguha
Copy link
Member

#amazing

@arjunguha arjunguha deleted the final-async branch February 22, 2014 21:18
@seliopou seliopou mentioned this pull request Mar 16, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants