CSC/ECE 517 Fall 2014/final design doc M1451 hsss

From Expertiza_Wiki
Revision as of 02:21, 11 November 2014 by Sanaik2 (talk | contribs)
Jump to navigation Jump to search

Introduction and architecture of system

Requirement analysis

1. The initial step required downloading and building the Rust compiler. To install Rust on the machine, clone the Rust source code from Mozilla's repository on GitHub.

2. Then we had to build the rust compiler.

3. To build the servo, we cloned the source code into the local repository.

4. Then we created a WebSocket.webidl file in the /servo/components/script/dom/webidls/ directory. This file was added in order to create a new interface for the web socket.This interface is inherited from the EventTarget interface in servo.

5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project<ref>https://html.spec.whatwg.org/multipage/comms.html</ref>.

6. We created a corresponding websocket.rs file in the /servo/components/script/dom/ directory. In this file we have currently created a constructor that takes a url as an argument. We have a stub function to return the url that is used for initializing the web socket object through the constructor.

7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.

8. We added the websocket module that we created to the lib.rs file.

9. After making all the changes we build are changes into servo.

10. This was Part One of our project, which was a part of our OSS project.

11. Part Two is our final project and is an extension of our OSS project.

12. Now we will create a constructor which will return an WebSocket object and initiate a basic connection with the server. There are couple of sub parts we will need here:
a. A ws scheme protocol handler (just as we have an http scheme protocol handler) that will implement the WS-specific parts of the connection process.
b. The ws protocol load method should transparently delegate the initial HTTP connection to http_loader::factory(); this way we do not need to duplicate the HTTP protocol code.
c. Using the same technique as the MIME sniffing project, the WS load method should intercept the response from the HTTP load. This will allow us to look at the HTTP response and verify the presence of the required Upgrade header as described in the spec before sending the connection results to the WebSocket implementation
13. We need to make the stream member of the BufferedResponse in rust-http public to enable writing further data to the original connection socket.
14. We have to implement the open and close method for connection.
15. Furthermore, we have to implement sending simple short strings that fit within a single frame, receiving simple data and sending fragmented payloads across multiple frames.

Data and component design

Design patterns

UML diagrams (Eg use case diagram, class diagrams)

Proposed Test Cases

References

</references>