<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sanaik2</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sanaik2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Sanaik2"/>
	<updated>2026-07-02T11:49:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91989</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91989"/>
		<updated>2014-11-12T02:58:14Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Proposed Test Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;b&amp;gt;About Servo&amp;lt;ref&amp;gt; https://www.mozilla.org/en-US/research/projects/&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Servo is an project to build a Web browser engine for a new generation of hardware. With Servo, we are rethinking the browser at every level of the technology stack — from input parsing to page layout to graphics rendering — to optimize for power efficiency and maximum parallelism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;About Rust&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Rust_%28programming_language%29&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The goal of Rust is to be a good language for the creation of large client and server programs that run over the Internet. This has led to a feature set with an emphasis on safety, control of memory layout and concurrency. Performance of safe code is expected to be slower than C++ if performance is the only consideration, but to be comparable to C++ code that manually takes precautions comparable to what the Rust language mandates.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Purpose&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a [https://github.com/servo/servo Servo] engine. It is basically a prototype web browser engine written in the [https://github.com/rust-lang/rust Rust] language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*Using the same technique as the [http://en.wikipedia.org/wiki/MIME 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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Singleton_pattern &amp;quot;Singleton Pattern&amp;quot;] because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Adapter_pattern &amp;quot;Adapter Pattern&amp;quot;] to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
==Proposed Test Cases==&lt;br /&gt;
&lt;br /&gt;
*Validating the url used to create a websocket object.&lt;br /&gt;
&lt;br /&gt;
*Check for an explicit port.&lt;br /&gt;
&lt;br /&gt;
*Checking if the connection with the remote server is established.&lt;br /&gt;
&lt;br /&gt;
*Check with session variables are reset on creating a new connection.&lt;br /&gt;
&lt;br /&gt;
*Check if the data if the messages are delivered to the remote host.&lt;br /&gt;
&lt;br /&gt;
*When the user agent validates the server's response during the &amp;quot;establish a WebSocket connection&amp;quot; algorithm, if the status code received from the server is not 101 (e.g. it is a redirect), it must fail the WebSocket connection.&lt;br /&gt;
&lt;br /&gt;
==Appendix==&lt;br /&gt;
&lt;br /&gt;
*Steps used for [https://github.com/rust-lang/rust/wiki/Note-getting-started-developing-Rust Installing Rust].&lt;br /&gt;
&lt;br /&gt;
*Steps used for [https://github.com/servo/servo Building Servo].&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91986</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91986"/>
		<updated>2014-11-12T02:55:16Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Proposed Test Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;b&amp;gt;About Servo&amp;lt;ref&amp;gt; https://www.mozilla.org/en-US/research/projects/&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Servo is an project to build a Web browser engine for a new generation of hardware. With Servo, we are rethinking the browser at every level of the technology stack — from input parsing to page layout to graphics rendering — to optimize for power efficiency and maximum parallelism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;About Rust&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Rust_%28programming_language%29&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The goal of Rust is to be a good language for the creation of large client and server programs that run over the Internet. This has led to a feature set with an emphasis on safety, control of memory layout and concurrency. Performance of safe code is expected to be slower than C++ if performance is the only consideration, but to be comparable to C++ code that manually takes precautions comparable to what the Rust language mandates.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Purpose&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a [https://github.com/servo/servo Servo] engine. It is basically a prototype web browser engine written in the [https://github.com/rust-lang/rust Rust] language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*Using the same technique as the [http://en.wikipedia.org/wiki/MIME 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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Singleton_pattern &amp;quot;Singleton Pattern&amp;quot;] because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Adapter_pattern &amp;quot;Adapter Pattern&amp;quot;] to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
==Proposed Test Cases==&lt;br /&gt;
&lt;br /&gt;
*Validating the url used to create a websocket object.&lt;br /&gt;
&lt;br /&gt;
*Checking if the connection with the remote server is established.&lt;br /&gt;
&lt;br /&gt;
*Check with session variables are reset on creating a new connection.&lt;br /&gt;
&lt;br /&gt;
*Check if the data if the messages are delivered to the remote host.&lt;br /&gt;
&lt;br /&gt;
*When the user agent validates the server's response during the &amp;quot;establish a WebSocket connection&amp;quot; algorithm, if the status code received from the server is not 101 (e.g. it is a redirect), it must fail the WebSocket connection.&lt;br /&gt;
&lt;br /&gt;
==Appendix==&lt;br /&gt;
&lt;br /&gt;
-Steps used for [https://github.com/rust-lang/rust/wiki/Note-getting-started-developing-Rust Installing Rust].&lt;br /&gt;
&lt;br /&gt;
-Steps used for [https://github.com/servo/servo Building Servo].&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91957</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91957"/>
		<updated>2014-11-12T02:28:37Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;b&amp;gt;About Servo&amp;lt;ref&amp;gt; https://www.mozilla.org/en-US/research/projects/&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Servo is an project to build a Web browser engine for a new generation of hardware. With Servo, we are rethinking the browser at every level of the technology stack — from input parsing to page layout to graphics rendering — to optimize for power efficiency and maximum parallelism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;About Rust&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Rust_%28programming_language%29&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The goal of Rust is to be a good language for the creation of large client and server programs that run over the Internet. This has led to a feature set with an emphasis on safety, control of memory layout and concurrency. Performance of safe code is expected to be slower than C++ if performance is the only consideration, but to be comparable to C++ code that manually takes precautions comparable to what the Rust language mandates.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Purpose&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a [https://github.com/servo/servo Servo] engine. It is basically a prototype web browser engine written in the [https://github.com/rust-lang/rust Rust] language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*Using the same technique as the [http://en.wikipedia.org/wiki/MIME 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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Singleton_pattern &amp;quot;Singleton Pattern&amp;quot;] because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Adapter_pattern &amp;quot;Adapter Pattern&amp;quot;] to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91955</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91955"/>
		<updated>2014-11-12T02:27:34Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;b&amp;gt;About Servo&amp;lt;ref&amp;gt; https://www.mozilla.org/en-US/research/projects/&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Servo is an project to build a Web browser engine for a new generation of hardware. With Servo, we are rethinking the browser at every level of the technology stack — from input parsing to page layout to graphics rendering — to optimize for power efficiency and maximum parallelism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;About Rust&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Rust_%28programming_language%29&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The goal of Rust is to be a good language for the creation of large client and server programs that run over the Internet.[16] This has led to a feature set with an emphasis on safety, control of memory layout and concurrency. Performance of safe code is expected to be slower than C++ if performance is the only consideration, but to be comparable to C++ code that manually takes precautions comparable to what the Rust language mandates.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Purpose&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a [https://github.com/servo/servo Servo] engine. It is basically a prototype web browser engine written in the [https://github.com/rust-lang/rust Rust] language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*Using the same technique as the [http://en.wikipedia.org/wiki/MIME 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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Singleton_pattern &amp;quot;Singleton Pattern&amp;quot;] because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Adapter_pattern &amp;quot;Adapter Pattern&amp;quot;] to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91953</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91953"/>
		<updated>2014-11-12T02:27:17Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;b&amp;gt;About Servo&amp;lt;ref&amp;gt; https://www.mozilla.org/en-US/research/projects/&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Servo is an project to build a Web browser engine for a new generation of hardware. With Servo, we are rethinking the browser at every level of the technology stack — from input parsing to page layout to graphics rendering — to optimize for power efficiency and maximum parallelism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;About Rust&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Rust_%28programming_language%29&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The goal of Rust is to be a good language for the creation of large client and server programs that run over the Internet.[16] This has led to a feature set with an emphasis on safety, control of memory layout and concurrency. Performance of safe code is expected to be slower than C++ if performance is the only consideration, but to be comparable to C++ code that manually takes precautions comparable to what the Rust language mandates.&lt;br /&gt;
&amp;lt;b&amp;gt;Purpose&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a [https://github.com/servo/servo Servo] engine. It is basically a prototype web browser engine written in the [https://github.com/rust-lang/rust Rust] language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*Using the same technique as the [http://en.wikipedia.org/wiki/MIME 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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Singleton_pattern &amp;quot;Singleton Pattern&amp;quot;] because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Adapter_pattern &amp;quot;Adapter Pattern&amp;quot;] to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91950</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91950"/>
		<updated>2014-11-12T02:21:22Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;b&amp;gt;About Servo&amp;lt;ref&amp;gt; https://www.mozilla.org/en-US/research/projects/&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Servo is an project to build a Web browser engine for a new generation of hardware. With Servo, we are rethinking the browser at every level of the technology stack — from input parsing to page layout to graphics rendering — to optimize for power efficiency and maximum parallelism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Purpose&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a [https://github.com/servo/servo Servo] engine. It is basically a prototype web browser engine written in the [https://github.com/rust-lang/rust Rust] language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*Using the same technique as the [http://en.wikipedia.org/wiki/MIME 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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Singleton_pattern &amp;quot;Singleton Pattern&amp;quot;] because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Adapter_pattern &amp;quot;Adapter Pattern&amp;quot;] to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91949</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91949"/>
		<updated>2014-11-12T02:20:42Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;b&amp;gt;About Servo&amp;lt;ref&amp;gt; https://www.mozilla.org/en-US/research/projects/&amp;lt;/ref&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
Servo is an project to build a Web browser engine for a new generation of hardware. With Servo, we are rethinking the browser at every level of the technology stack — from input parsing to page layout to graphics rendering — to optimize for power efficiency and maximum parallelism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Purpose&amp;lt;/b&amp;gt;&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a [https://github.com/servo/servo Servo] engine. It is basically a prototype web browser engine written in the [https://github.com/rust-lang/rust Rust] language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*Using the same technique as the [http://en.wikipedia.org/wiki/MIME 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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Singleton_pattern &amp;quot;Singleton Pattern&amp;quot;] because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Adapter_pattern &amp;quot;Adapter Pattern&amp;quot;] to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91938</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91938"/>
		<updated>2014-11-12T02:08:17Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Design patterns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a [https://github.com/servo/servo Servo] engine. It is basically a prototype web browser engine written in the [https://github.com/rust-lang/rust Rust] language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*Using the same technique as the [http://en.wikipedia.org/wiki/MIME 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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Singleton_pattern &amp;quot;Singleton Pattern&amp;quot;] because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using [http://en.wikipedia.org/wiki/Adapter_pattern &amp;quot;Adapter Pattern&amp;quot;] to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91937</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91937"/>
		<updated>2014-11-12T02:07:09Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Requirement analysishttps://github.com/servo/servo/wiki/WebSocket-student-project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a [https://github.com/servo/servo Servo] engine. It is basically a prototype web browser engine written in the [https://github.com/rust-lang/rust Rust] language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*Using the same technique as the [http://en.wikipedia.org/wiki/MIME 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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91936</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91936"/>
		<updated>2014-11-12T02:06:06Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a [https://github.com/servo/servo Servo] engine. It is basically a prototype web browser engine written in the [https://github.com/rust-lang/rust Rust] language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91934</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91934"/>
		<updated>2014-11-12T02:03:15Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Proposed Test Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91933</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91933"/>
		<updated>2014-11-12T02:03:00Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* UML diagram: UseCase Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object:&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function:&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function:&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function:&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function:&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91932</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91932"/>
		<updated>2014-11-12T02:02:19Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* UML diagram: UseCase Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Create a web socket object.&lt;br /&gt;
This object allows a basic connection to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onopen function.&lt;br /&gt;
Connection along with on open event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onclose function.&lt;br /&gt;
Connection along with on close event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the onmessage function.&lt;br /&gt;
Receiving of simple data and the on message event.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Call the send function.&lt;br /&gt;
Sends fragmented data.&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91926</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91926"/>
		<updated>2014-11-12T01:57:30Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* UML diagram: UseCase Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use Cases:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Create a web socket object.&lt;br /&gt;
This allows a basic connection to the server.&lt;br /&gt;
&lt;br /&gt;
Call the onopen function.&lt;br /&gt;
Call the onclose function.&lt;br /&gt;
Call the onmessage function.&lt;br /&gt;
Call the send function.&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91924</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91924"/>
		<updated>2014-11-12T01:53:49Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* UML diagrams (Eg use case diagram, class diagrams) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagram: UseCase Diagram ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91922</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91922"/>
		<updated>2014-11-12T01:50:32Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Data and component design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
Flowchart:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91921</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91921"/>
		<updated>2014-11-12T01:47:35Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Data and component design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
[[File:Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91920</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91920"/>
		<updated>2014-11-12T01:46:12Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Data and component design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
[[File:Diagram_websocket.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91919</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91919"/>
		<updated>2014-11-12T01:45:55Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Data and component design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
[[File:Diagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91918</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91918"/>
		<updated>2014-11-12T01:44:37Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Data and component design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
[[File:wfws.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91917</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91917"/>
		<updated>2014-11-12T01:40:26Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Data and component design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
[[File:WorkflowDiagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91914</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91914"/>
		<updated>2014-11-12T01:38:34Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Data and component design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
[[File:WokflowDiagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91913</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91913"/>
		<updated>2014-11-12T01:37:09Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* UML diagrams (Eg use case diagram, class diagrams) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page contains details on the planned course of actions for the project on [https://github.com/servo/servo/wiki/WebSocket-student-project Implement WebSocket API] for the Mozilla research project [http://github.com/servo/servo/wiki/Design Servo].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This project is about implementing a protocol to define rules regarding the nature of data being sent/receive between the web page and the server built on a Mozilla Framework. We started by creating a WebSocket interface and its corresponding Rust implementation. The constructor of this interface returns a WebSocket object which will help us in establishing a basic HTTP connection to the server. Thereafter we plan to implement methods like close, open on the API along with the onopen and onclose events. &lt;br /&gt;
&lt;br /&gt;
This WebSocket interface runs on a Servo engine. It is basically a prototype web browser engine written in the Rust language. It is currently developed on 64bit OS X and 64bit Linux. Servo is explicitly not aiming to create a full Web browser (except for demonstration and experimentation purposes). Rather it is focused on creating a&lt;br /&gt;
solid, embedded engine.&lt;br /&gt;
&lt;br /&gt;
== Architecture of system &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Design#task-supervision-diagram&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Task Supervision Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskSupervision.png]]&lt;br /&gt;
&lt;br /&gt;
=== Task Communication Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:TaskCommunication.png]]&lt;br /&gt;
&lt;br /&gt;
The above diagrams gives us an overview of the Servo's architecture.&lt;br /&gt;
*Each box represents a Rust task.&lt;br /&gt;
*Primary tasks are the ones which are represented by blue boxes.&lt;br /&gt;
*Gray boxes are for auxiliary tasks.&lt;br /&gt;
*White boxes are for worker tasks. Each such box represents several tasks, the precise number of which are decided by the workload.&lt;br /&gt;
*Supervisor relationships are shown by dashed lines.&lt;br /&gt;
*Communication channels are shown by solid lines.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
*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&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
=== Singleton Pattern ===&lt;br /&gt;
We are using &amp;quot;Singleton Pattern&amp;quot; because it will confine the instantiation of class 'WebSocket' to only one object. This ensures that the instance can be accessed from everywhere and hence provide a global point of access.&lt;br /&gt;
&lt;br /&gt;
=== Adapter Pattern ===&lt;br /&gt;
We are using &amp;quot;Adapter Pattern&amp;quot; to convert the interface of class 'WebSocket' into another interface that the caller expects. &amp;quot;Adapter pattern&amp;quot; allows other classes with incompatible interfaces to work together with class 'WebSocket', which is solely responsible to enable Web applications to maintain bidirectional communications with server-side processes.&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
[[File:UseCaseDiagram_websocket.png]]&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:UseCaseDiagram_websocket.png&amp;diff=91899</id>
		<title>File:UseCaseDiagram websocket.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:UseCaseDiagram_websocket.png&amp;diff=91899"/>
		<updated>2014-11-12T01:04:53Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: uploaded a new version of &amp;amp;quot;File:UseCaseDiagram websocket.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:UseCaseDiagram_websocket.png&amp;diff=91892</id>
		<title>File:UseCaseDiagram websocket.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:UseCaseDiagram_websocket.png&amp;diff=91892"/>
		<updated>2014-11-12T00:58:43Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91660</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91660"/>
		<updated>2014-11-11T02:28:19Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Requirement analysishttps://github.com/servo/servo/wiki/WebSocket-student-project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction and architecture of system ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91659</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91659"/>
		<updated>2014-11-11T02:27:41Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Requirement analysishttps://github.com/servo/servo/wiki/WebSocket-student-project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction and architecture of system ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
13. In order to allow writing more data to the existing socket connection, we plan to make the stream member in the BufferedResponse in rust-http public. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
14. We have to implement closing of connection along with on open and inclose events. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91658</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91658"/>
		<updated>2014-11-11T02:24:09Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Requirement analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction and architecture of system ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirement analysis&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/WebSocket-student-project&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
14. We have to implement the open and close method for connection.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91657</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91657"/>
		<updated>2014-11-11T02:22:22Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction and architecture of system ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirement analysis ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
14. We have to implement the open and close method for connection.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91655</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91655"/>
		<updated>2014-11-11T02:21:48Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction and architecture of system ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirement analysis ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project&amp;lt;ref&amp;gt;https://html.spec.whatwg.org/multipage/comms.html&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
14. We have to implement the open and close method for connection.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91651</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91651"/>
		<updated>2014-11-11T02:17:52Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Requirement analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction and architecture of system ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirement analysis ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
14. We have to implement the open and close method for connection.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91650</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91650"/>
		<updated>2014-11-11T02:11:59Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Requirement analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction and architecture of system ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirement analysis ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12 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&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91648</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91648"/>
		<updated>2014-11-11T02:05:56Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Requirement analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction and architecture of system ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirement analysis ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
12. Now we will create a constructor which will return an WebSocket object and initiate a basic connection with the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91647</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91647"/>
		<updated>2014-11-11T02:05:41Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Requirement analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction and architecture of system ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirement analysis ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Then we had to build the rust compiler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. To build the servo, we cloned the source code into the local repository.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. We added several attributes and methods to the WebSocket.webidl file which we plan to execute during the course of the project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. We added The WebSocketTypeId to the struct in the eventtarget.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. We added the websocket module that we created to the lib.rs file.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. After making all the changes we build are changes into servo. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. This was Part One of our project, which was a part of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Part Two is our final project and is an extension of our OSS project.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
12. Now we will create a constructor which will return an WebSocket object and initiate a basic connection with the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91646</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91646"/>
		<updated>2014-11-11T01:46:34Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction and architecture of system ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirement analysis ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91645</id>
		<title>CSC/ECE 517 Fall 2014/final design doc M1451 hsss</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss&amp;diff=91645"/>
		<updated>2014-11-11T01:45:43Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: Created page with &amp;quot;  == Introduction and architecture of system ==&amp;lt;br&amp;gt;    == Requirement analysis ==&amp;lt;br&amp;gt;    == Data and component design ==&amp;lt;br&amp;gt;    == Design patterns ==&amp;lt;br&amp;gt;    == UML diagrams (Eg u...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction and architecture of system ==&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirement analysis ==&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data and component design ==&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design patterns ==&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UML diagrams (Eg use case diagram, class diagrams) ==&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposed Test Cases ==&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014&amp;diff=91644</id>
		<title>CSC/ECE 517 Fall 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014&amp;diff=91644"/>
		<updated>2014-11-11T01:42:47Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[CSC/ECE_517_Fall_2014/sample_page]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 22 as]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 19 mx]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 3 zq]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 4 lf]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 4 wl]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a a7 ch]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 rs]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 jf]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 8 os]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 8 sn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 15 gs]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 10 hu]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 20 kv]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 21 as]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 24 sa]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 26 sn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 6 rl]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 2 ss]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 16 av]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 1 rm]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 1 sj]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 23 ss]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 20 rn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 22 sp]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss M1454 rss]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 26 gn]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 13 va]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 9 aa]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 9 kn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 11 ap]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 ks]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 7 kz]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a_6_bn]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 10 zz]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 16 va]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a F1415 rv]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a_3_cp]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1b 26 sa]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_28_cg]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b 29 ry]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b 30 cs]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_33_jy]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_27_js]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss E1453 syy]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss E1463 vpd]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss E1465 oak]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_M1456_kdv]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_M1453_sst]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_E1456_akk]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_M1455_asa]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1458_sst]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1457_ags]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1466_gjf]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_M1452_jns]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1462_nms]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_S1455_ajp]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_S1454_ccc]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1450_cxm]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1455_skn]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_M1450_vda]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1467_rsv]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1464_vnn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/OSS_M1451_ahs]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/OSS_E1451_las]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/OSS_E1461_knn]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1460_aua]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1459_jjr]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/final_E1474_akkn]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/final_E1472_gjfz]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss]]&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Report1455.png&amp;diff=90280</id>
		<title>File:Report1455.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Report1455.png&amp;diff=90280"/>
		<updated>2014-10-29T02:35:25Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: uploaded a new version of &amp;amp;quot;File:Report1455.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90279</id>
		<title>CSC/ECE 517 Fall 2014/oss M1455 asa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90279"/>
		<updated>2014-10-29T02:34:37Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Run Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== EVALUATE REPLACING C IMAGE &amp;amp; FONT LIBRARIES WITH RUST EQUIVALENTS ==&lt;br /&gt;
In this wiki we represent the steps followed in order to implement the taskes assigned under the the above OSS Mozilla Project.&lt;br /&gt;
It required us to make changes to the Servo code base.&lt;br /&gt;
&lt;br /&gt;
== Introduction to Rust==&lt;br /&gt;
Rust is a new programming language for developing reliable and efficient systems. It's designed to support concurrency and parallelism in building platforms that take full advantage of modern hardware. Its static type system is safe and expressive and it provides strong guarantees about isolation, concurrency execution and memory safety.&lt;br /&gt;
&lt;br /&gt;
Rust combines powerful and flexible modern programming constructs with a clear performance model to make program efficiency predictable and manageable. One important way it achieves this is by allowing fine-grained control over memory allocation through contiguous records and stack allocation. This control is balanced with the absolute requirement of safety: Rust’s type system and runtime guarantee the absence of data races, buffer overflow, stack overflow or access to uninitialized or deallocated memory.&lt;br /&gt;
&lt;br /&gt;
== Introduction to Servo==&lt;br /&gt;
Servo is an experimental project to build a Web browser engine for a new generation of hardware: mobile devices, multi-core processors and high-performance GPUs. With Servo, we are rethinking the browser at every level of the technology stack — from input parsing to page layout to graphics rendering — to optimize for power efficiency and maximum parallelism.&lt;br /&gt;
&lt;br /&gt;
Servo builds on top of Rust to provide a secure and reliable foundation. Memory safety at the core of the platform ensures a high degree of assurance in the browser’s trusted computing base. Rust’s lightweight task mechanism also promises to allow fine-grained isolation between browser components, such as tabs and extensions, without the need for expensive runtime protection schemes, like operating system process isolation.&lt;br /&gt;
&lt;br /&gt;
== Aim ==&lt;br /&gt;
The aim of our project is display the time required by the decode function to decode images of different formats, e.g, jpeg, bmp, png, gif.&lt;br /&gt;
&lt;br /&gt;
== Steps of Implementation ==&lt;br /&gt;
We implemented the following steps on our linux machine:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Build Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1. We first need to clone the servo repository from git using the following command:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://www.github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Screen1M1455.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Now we have a local copy of the servo codebase.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. We build the servo using&amp;lt;br&amp;gt; &lt;br /&gt;
   ./mach build&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Shraddha1455.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Building servo basically compiling the code along withthe dependent libraries. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Once our servo is built, we have to run a test in order to ensure the build was successful. This is done using the below command &amp;lt;br&amp;gt;&lt;br /&gt;
   ./mach run url &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:M1455_3.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_4.png]]&lt;br /&gt;
&lt;br /&gt;
The above output shows that the html page was successfully launched by the servo browser. Thus proving that the build was successful.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''• Add timing code'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once the initial step is completed, our next task was to add timing code around the code block which performed decoding of images.&lt;br /&gt;
The decoding of images is performed in the https://github.com/servo/servo/blob/master/components/net/image_cache_task.rs rust file.&lt;br /&gt;
&lt;br /&gt;
1. In image_cache_task.rs , we have a fn decode which calls the load_from_memory fn in base.rs. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Image decoding is implemented in this load_from_memory function.&amp;lt;br&amp;gt;&lt;br /&gt;
3. So we added the timing code arround this function call in imacge_cache_task.rs&amp;lt;br&amp;gt;&lt;br /&gt;
4. precise_time_ns() gives us the current time.&amp;lt;br&amp;gt;&lt;br /&gt;
5. So we added it before the call to get the start time of decoding and after the call to get the end time.&amp;lt;br&amp;gt;&lt;br /&gt;
6. Difference of the two gave us the decoding time, which can be printed on command line.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;let start_time=precise_time_ns();&lt;br /&gt;
 let image = load_from_memory(data.as_slice());&lt;br /&gt;
 let end_time=precise_time_ns();.&lt;br /&gt;
 let required_time=(end_time-start_time) as f64/1000000f64;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Rebuild Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once we made the above changes, we now need to rebuild the servo code base. For this we again follow the same steps as described in the build servo section.&lt;br /&gt;
&lt;br /&gt;
== Run Tests ==&lt;br /&gt;
We tested images with different file formats and resolution using &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;./mach run image_url&amp;lt;/pre&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_5.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
You can see the decoding time values reported for the different images on the command line.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Further the tabulated results are reported below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:report1455.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
https://www.mozilla.org/en-US/research/projects/&lt;br /&gt;
&lt;br /&gt;
== Further Reading==&lt;br /&gt;
https://people.mozilla.org/~roc/Samsung/MozillaRustAndServo.pdf&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Report1455.png&amp;diff=90278</id>
		<title>File:Report1455.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Report1455.png&amp;diff=90278"/>
		<updated>2014-10-29T02:33:30Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Shraddha1455.png&amp;diff=90263</id>
		<title>File:Shraddha1455.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Shraddha1455.png&amp;diff=90263"/>
		<updated>2014-10-29T02:21:45Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90261</id>
		<title>CSC/ECE 517 Fall 2014/oss M1455 asa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90261"/>
		<updated>2014-10-29T02:21:02Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Steps of Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== EVALUATE REPLACING C IMAGE &amp;amp; FONT LIBRARIES WITH RUST EQUIVALENTS ==&lt;br /&gt;
In this wiki we represent the steps followed in order to implement the taskes assigned under the the above OSS Mozilla Project.&lt;br /&gt;
It required us to make changes to the Servo code base.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Servo is an experimental web browser layout engine being developed by Mozilla Research for new generation hardware.&lt;br /&gt;
The project has a symbiotic relationship with the Rust programming language, in which it is being developed. Rust is a new programming language for developing reliable and efficient systems.&lt;br /&gt;
&lt;br /&gt;
Servo currently depends on a lot of C libraries, because Rust equivalents did not exist when the project started. &lt;br /&gt;
We want to evaluate switching some of these to new Rust libraries that have been created. &lt;br /&gt;
This project involves rewriting the code that uses these libraries as well as taking measurements before and after to determine the costs involved.&lt;br /&gt;
&lt;br /&gt;
== Aim ==&lt;br /&gt;
The aim of our project is display the time required by the decode function to decode images of different formats, e.g, jpeg, bmp, png, gif.&lt;br /&gt;
&lt;br /&gt;
== Steps of Implementation ==&lt;br /&gt;
We implemented the following steps on our linux machine:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Build Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1. We first need to clone the servo repository from git using the following command:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://www.github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Screen1M1455.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Now we have a local copy of the servo codebase.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. We build the servo using&amp;lt;br&amp;gt; &lt;br /&gt;
   ./mach build&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Shraddha1455.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Building servo basically compiling the code along withthe dependent libraries. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Once our servo is built, we have to run a test in order to ensure the build was successful. This is done using the below command &amp;lt;br&amp;gt;&lt;br /&gt;
   ./mach run url &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:M1455_3.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_4.png]]&lt;br /&gt;
&lt;br /&gt;
The above output shows that the html page was successfully launched by the servo browser. Thus proving that the build was successful.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''• Add timing code'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once the initial step is completed, our next task was to add timing code around the code block which performed decoding of images.&lt;br /&gt;
The decoding of images is performed in the https://github.com/servo/servo/blob/master/components/net/image_cache_task.rs rust file.&lt;br /&gt;
&lt;br /&gt;
1. In image_cache_task.rs , we have a fn decode which calls the load_from_memory fn in base.rs. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Image decoding is implemented in this load_from_memory function.&amp;lt;br&amp;gt;&lt;br /&gt;
3. So we added the timing code arround this function call in imacge_cache_task.rs&amp;lt;br&amp;gt;&lt;br /&gt;
4. precise_time_ns() gives us the current time.&amp;lt;br&amp;gt;&lt;br /&gt;
5. So we added it before the call to get the start time of decoding and after the call to get the end time.&amp;lt;br&amp;gt;&lt;br /&gt;
6. Difference of the two gave us the decoding time, which can be printed on command line.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;let start_time=precise_time_ns();&lt;br /&gt;
 let image = load_from_memory(data.as_slice());&lt;br /&gt;
 let end_time=precise_time_ns();.&lt;br /&gt;
 let required_time=(end_time-start_time) as f64/1000000f64;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Rebuild Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once we made the above changes, we now need to rebuild the servo code base. For this we again follow the same steps as described in the build servo section.&lt;br /&gt;
&lt;br /&gt;
== Run Tests ==&lt;br /&gt;
We tested images with different file formats and resolution using ./mach run image_url.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_5.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
You can see the decoding time values reported for the different images on the command line.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Further the tabulated results are reported below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90258</id>
		<title>CSC/ECE 517 Fall 2014/oss M1455 asa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90258"/>
		<updated>2014-10-29T02:19:26Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Steps of Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== EVALUATE REPLACING C IMAGE &amp;amp; FONT LIBRARIES WITH RUST EQUIVALENTS ==&lt;br /&gt;
In this wiki we represent the steps followed in order to implement the taskes assigned under the the above OSS Mozilla Project.&lt;br /&gt;
It required us to make changes to the Servo code base.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Servo is an experimental web browser layout engine being developed by Mozilla Research for new generation hardware.&lt;br /&gt;
The project has a symbiotic relationship with the Rust programming language, in which it is being developed. Rust is a new programming language for developing reliable and efficient systems.&lt;br /&gt;
&lt;br /&gt;
Servo currently depends on a lot of C libraries, because Rust equivalents did not exist when the project started. &lt;br /&gt;
We want to evaluate switching some of these to new Rust libraries that have been created. &lt;br /&gt;
This project involves rewriting the code that uses these libraries as well as taking measurements before and after to determine the costs involved.&lt;br /&gt;
&lt;br /&gt;
== Aim ==&lt;br /&gt;
The aim of our project is display the time required by the decode function to decode images of different formats, e.g, jpeg, bmp, png, gif.&lt;br /&gt;
&lt;br /&gt;
== Steps of Implementation ==&lt;br /&gt;
We implemented the following steps on our linux machine:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Build Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1. We first need to clone the servo repository from git using the following command:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://www.github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Screen1M1455.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Now we have a local copy of the servo codebase.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. We build the servo using&amp;lt;br&amp;gt; &lt;br /&gt;
   ./mach build&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:bs14.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Building servo basically compiling the code along withthe dependent libraries. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Once our servo is built, we have to run a test in order to ensure the build was successful. This is done using the below command &amp;lt;br&amp;gt;&lt;br /&gt;
   ./mach run url &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:M1455_3.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_4.png]]&lt;br /&gt;
&lt;br /&gt;
The above output shows that the html page was successfully launched by the servo browser. Thus proving that the build was successful.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''• Add timing code'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once the initial step is completed, our next task was to add timing code around the code block which performed decoding of images.&lt;br /&gt;
The decoding of images is performed in the https://github.com/servo/servo/blob/master/components/net/image_cache_task.rs rust file.&lt;br /&gt;
&lt;br /&gt;
1. In image_cache_task.rs , we have a fn decode which calls the load_from_memory fn in base.rs. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Image decoding is implemented in this load_from_memory function.&amp;lt;br&amp;gt;&lt;br /&gt;
3. So we added the timing code arround this function call in imacge_cache_task.rs&amp;lt;br&amp;gt;&lt;br /&gt;
4. precise_time_ns() gives us the current time.&amp;lt;br&amp;gt;&lt;br /&gt;
5. So we added it before the call to get the start time of decoding and after the call to get the end time.&amp;lt;br&amp;gt;&lt;br /&gt;
6. Difference of the two gave us the decoding time, which can be printed on command line.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;let start_time=precise_time_ns();&lt;br /&gt;
 let image = load_from_memory(data.as_slice());&lt;br /&gt;
 let end_time=precise_time_ns();&lt;br /&gt;
 let required_time=(end_time-start_time) as f64/1000000f64;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Rebuild Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Run Tests ==&lt;br /&gt;
We tested images with different file formats and resolution using ./mach run image_url.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_5.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
You can see the decoding time values reported for the different images on the command line.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Further the tabulated results are reported below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90256</id>
		<title>CSC/ECE 517 Fall 2014/oss M1455 asa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90256"/>
		<updated>2014-10-29T02:18:33Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Steps of Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== EVALUATE REPLACING C IMAGE &amp;amp; FONT LIBRARIES WITH RUST EQUIVALENTS ==&lt;br /&gt;
In this wiki we represent the steps followed in order to implement the taskes assigned under the the above OSS Mozilla Project.&lt;br /&gt;
It required us to make changes to the Servo code base.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Servo is an experimental web browser layout engine being developed by Mozilla Research for new generation hardware.&lt;br /&gt;
The project has a symbiotic relationship with the Rust programming language, in which it is being developed. Rust is a new programming language for developing reliable and efficient systems.&lt;br /&gt;
&lt;br /&gt;
Servo currently depends on a lot of C libraries, because Rust equivalents did not exist when the project started. &lt;br /&gt;
We want to evaluate switching some of these to new Rust libraries that have been created. &lt;br /&gt;
This project involves rewriting the code that uses these libraries as well as taking measurements before and after to determine the costs involved.&lt;br /&gt;
&lt;br /&gt;
== Aim ==&lt;br /&gt;
The aim of our project is display the time required by the decode function to decode images of different formats, e.g, jpeg, bmp, png, gif.&lt;br /&gt;
&lt;br /&gt;
== Steps of Implementation ==&lt;br /&gt;
We implemented the following steps on our linux machine:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Build Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1. We first need to clone the servo repository from git using the following command:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://www.github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Screen1M1455.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Now we have a local copy of the servo codebase.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. We build the servo using&amp;lt;br&amp;gt; &lt;br /&gt;
   ./mach build&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:buildservo1455.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Building servo basically compiling the code along withthe dependent libraries. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Once our servo is built, we have to run a test in order to ensure the build was successful. This is done using the below command &amp;lt;br&amp;gt;&lt;br /&gt;
   ./mach run url &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:M1455_3.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_4.png]]&lt;br /&gt;
&lt;br /&gt;
The above output shows that the html page was successfully launched by the servo browser. Thus proving that the build was successful.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''• Add timing code'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once the initial step is completed, our next task was to add timing code around the code block which performed decoding of images.&lt;br /&gt;
The decoding of images is performed in the https://github.com/servo/servo/blob/master/components/net/image_cache_task.rs rust file.&lt;br /&gt;
&lt;br /&gt;
1. In image_cache_task.rs , we have a fn decode which calls the load_from_memory fn in base.rs. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Image decoding is implemented in this load_from_memory function.&amp;lt;br&amp;gt;&lt;br /&gt;
3. So we added the timing code arround this function call in imacge_cache_task.rs&amp;lt;br&amp;gt;&lt;br /&gt;
4. precise_time_ns() gives us the current time.&amp;lt;br&amp;gt;&lt;br /&gt;
5. So we added it before the call to get the start time of decoding and after the call to get the end time.&amp;lt;br&amp;gt;&lt;br /&gt;
6. Difference of the two gave us the decoding time, which can be printed on command line.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;let start_time=precise_time_ns();&lt;br /&gt;
 let image = load_from_memory(data.as_slice());&lt;br /&gt;
 let end_time=precise_time_ns();&lt;br /&gt;
 let required_time=(end_time-start_time) as f64/1000000f64;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Rebuild Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Run Tests ==&lt;br /&gt;
We tested images with different file formats and resolution using ./mach run image_url.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_5.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
You can see the decoding time values reported for the different images on the command line.&lt;br /&gt;
These are the results we got:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90254</id>
		<title>CSC/ECE 517 Fall 2014/oss M1455 asa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90254"/>
		<updated>2014-10-29T02:17:52Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Steps of Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== EVALUATE REPLACING C IMAGE &amp;amp; FONT LIBRARIES WITH RUST EQUIVALENTS ==&lt;br /&gt;
In this wiki we represent the steps followed in order to implement the taskes assigned under the the above OSS Mozilla Project.&lt;br /&gt;
It required us to make changes to the Servo code base.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Servo is an experimental web browser layout engine being developed by Mozilla Research for new generation hardware.&lt;br /&gt;
The project has a symbiotic relationship with the Rust programming language, in which it is being developed. Rust is a new programming language for developing reliable and efficient systems.&lt;br /&gt;
&lt;br /&gt;
Servo currently depends on a lot of C libraries, because Rust equivalents did not exist when the project started. &lt;br /&gt;
We want to evaluate switching some of these to new Rust libraries that have been created. &lt;br /&gt;
This project involves rewriting the code that uses these libraries as well as taking measurements before and after to determine the costs involved.&lt;br /&gt;
&lt;br /&gt;
== Aim ==&lt;br /&gt;
The aim of our project is display the time required by the decode function to decode images of different formats, e.g, jpeg, bmp, png, gif.&lt;br /&gt;
&lt;br /&gt;
== Steps of Implementation ==&lt;br /&gt;
We implemented the following steps on our linux machine:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Build Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1. We first need to clone the servo repository from git using the following command:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://www.github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Screen1M1455.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Now we have a local copy of the servo codebase.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. We build the servo using&amp;lt;br&amp;gt; &lt;br /&gt;
   ./mach build&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:buildservoM1455.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Building servo basically compiling the code along withthe dependent libraries. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Once our servo is built, we have to run a test in order to ensure the build was successful. This is done using the below command &amp;lt;br&amp;gt;&lt;br /&gt;
   ./mach run url &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:M1455_3.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_4.png]]&lt;br /&gt;
&lt;br /&gt;
The above output shows that the html page was successfully launched by the servo browser. Thus proving that the build was successful.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''• Add timing code'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once the initial step is completed, our next task was to add timing code around the code block which performed decoding of images.&lt;br /&gt;
The decoding of images is performed in the https://github.com/servo/servo/blob/master/components/net/image_cache_task.rs rust file.&lt;br /&gt;
&lt;br /&gt;
1. In image_cache_task.rs , we have a fn decode which calls the load_from_memory fn in base.rs. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Image decoding is implemented in this load_from_memory function.&amp;lt;br&amp;gt;&lt;br /&gt;
3. So we added the timing code arround this function call in imacge_cache_task.rs&amp;lt;br&amp;gt;&lt;br /&gt;
4. precise_time_ns() gives us the current time.&amp;lt;br&amp;gt;&lt;br /&gt;
5. So we added it before the call to get the start time of decoding and after the call to get the end time.&amp;lt;br&amp;gt;&lt;br /&gt;
6. Difference of the two gave us the decoding time, which can be printed on command line.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;let start_time=precise_time_ns();&lt;br /&gt;
 let image = load_from_memory(data.as_slice());&lt;br /&gt;
 let end_time=precise_time_ns();&lt;br /&gt;
 let required_time=(end_time-start_time) as f64/1000000f64;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Rebuild Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Run Tests ==&lt;br /&gt;
We tested images with different file formats and resolution using ./mach run image_url.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_5.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
These are the results we got:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90253</id>
		<title>CSC/ECE 517 Fall 2014/oss M1455 asa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90253"/>
		<updated>2014-10-29T02:15:58Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Steps of Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== EVALUATE REPLACING C IMAGE &amp;amp; FONT LIBRARIES WITH RUST EQUIVALENTS ==&lt;br /&gt;
In this wiki we represent the steps followed in order to implement the taskes assigned under the the above OSS Mozilla Project.&lt;br /&gt;
It required us to make changes to the Servo code base.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Servo is an experimental web browser layout engine being developed by Mozilla Research for new generation hardware.&lt;br /&gt;
The project has a symbiotic relationship with the Rust programming language, in which it is being developed. Rust is a new programming language for developing reliable and efficient systems.&lt;br /&gt;
&lt;br /&gt;
Servo currently depends on a lot of C libraries, because Rust equivalents did not exist when the project started. &lt;br /&gt;
We want to evaluate switching some of these to new Rust libraries that have been created. &lt;br /&gt;
This project involves rewriting the code that uses these libraries as well as taking measurements before and after to determine the costs involved.&lt;br /&gt;
&lt;br /&gt;
== Aim ==&lt;br /&gt;
The aim of our project is display the time required by the decode function to decode images of different formats, e.g, jpeg, bmp, png, gif.&lt;br /&gt;
&lt;br /&gt;
== Steps of Implementation ==&lt;br /&gt;
We implemented the following steps on our linux machine:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Build Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1. We first need to clone the servo repository from git using the following command:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://www.github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Screen1M1455.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Now we have a local copy of the servo codebase.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. We build the servo using&amp;lt;br&amp;gt; &lt;br /&gt;
   ./mach build&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Building servo basically compiling the code along withthe dependent libraries. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Once our servo is built, we have to run a test in order to ensure the build was successful. This is done using the below command &amp;lt;br&amp;gt;&lt;br /&gt;
   ./mach run url &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:M1455_3.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_4.png]]&lt;br /&gt;
&lt;br /&gt;
The above output shows that the html page was successfully launched by the servo browser. Thus proving that the build was successful.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''• Add timing code'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Once the initial step is completed, our next task was to add timing code around the code block which performed decoding of images.&lt;br /&gt;
The decoding of images is performed in the https://github.com/servo/servo/blob/master/components/net/image_cache_task.rs rust file.&lt;br /&gt;
&lt;br /&gt;
1. In image_cache_task.rs , we have a fn decode which calls the load_from_memory fn in base.rs. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Image decoding is implemented in this load_from_memory function.&amp;lt;br&amp;gt;&lt;br /&gt;
3. So we added the timing code arround this function call in imacge_cache_task.rs&amp;lt;br&amp;gt;&lt;br /&gt;
4. precise_time_ns() gives us the current time.&amp;lt;br&amp;gt;&lt;br /&gt;
5. So we added it before the call to get the start time of decoding and after the call to get the end time.&amp;lt;br&amp;gt;&lt;br /&gt;
6. Difference of the two gave us the decoding time, which can be printed on command line.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;let start_time=precise_time_ns();&lt;br /&gt;
 let image = load_from_memory(data.as_slice());&lt;br /&gt;
 let end_time=precise_time_ns();&lt;br /&gt;
 let required_time=(end_time-start_time) as f64/1000000f64;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Rebuild Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Run Tests ==&lt;br /&gt;
We tested images with different file formats and resolution using ./mach run image_url.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_5.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
These are the results we got:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Screen1M1455.png&amp;diff=90252</id>
		<title>File:Screen1M1455.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Screen1M1455.png&amp;diff=90252"/>
		<updated>2014-10-29T02:15:37Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: uploaded a new version of &amp;amp;quot;File:Screen1M1455.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Screen1M1455.png&amp;diff=90251</id>
		<title>File:Screen1M1455.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Screen1M1455.png&amp;diff=90251"/>
		<updated>2014-10-29T02:15:36Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90248</id>
		<title>CSC/ECE 517 Fall 2014/oss M1455 asa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90248"/>
		<updated>2014-10-29T02:13:32Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Steps of Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== EVALUATE REPLACING C IMAGE &amp;amp; FONT LIBRARIES WITH RUST EQUIVALENTS ==&lt;br /&gt;
In this wiki we represent the steps followed in order to implement the taskes assigned under the the above OSS Mozilla Project.&lt;br /&gt;
It required us to make changes to the Servo code base.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Servo is an experimental web browser layout engine being developed by Mozilla Research for new generation hardware.&lt;br /&gt;
The project has a symbiotic relationship with the Rust programming language, in which it is being developed. Rust is a new programming language for developing reliable and efficient systems.&lt;br /&gt;
&lt;br /&gt;
Servo currently depends on a lot of C libraries, because Rust equivalents did not exist when the project started. &lt;br /&gt;
We want to evaluate switching some of these to new Rust libraries that have been created. &lt;br /&gt;
This project involves rewriting the code that uses these libraries as well as taking measurements before and after to determine the costs involved.&lt;br /&gt;
&lt;br /&gt;
== Aim ==&lt;br /&gt;
The aim of our project is display the time required by the decode function to decode images of different formats, e.g, jpeg, bmp, png, gif.&lt;br /&gt;
&lt;br /&gt;
== Steps of Implementation ==&lt;br /&gt;
We implemented the following steps on our linux machine:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Build Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1. We first need to clone the servo repository from git using the following command:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://www.github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_1.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Now we have a local copy of the servo codebase.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. We build the servo using&amp;lt;br&amp;gt; &lt;br /&gt;
   ./mach build&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:M1455_2.png|left]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Building servo basically compiling the code along withthe dependent libraries. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Once our servo is built, we have to run a test in order to ensure the build was successful. This is done using the below command &amp;lt;br&amp;gt;&lt;br /&gt;
   ./mach run url &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:M1455_3.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_4.png]]&lt;br /&gt;
&lt;br /&gt;
The above output shows that the html page was successfully launched by the servo browser. Thus proving that the build was successful.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''• Add timing code'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1. In image_cache_task.rs , we have a fn decode which calls the load_from_memory fn in base.rs. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Image decoding is implemented in this load_from_memory function.&amp;lt;br&amp;gt;&lt;br /&gt;
3. So we added the timing code arround this function call in imacge_cache_task.rs&amp;lt;br&amp;gt;&lt;br /&gt;
4. precise_time_ns() gives us the current time.&amp;lt;br&amp;gt;&lt;br /&gt;
5. So we added it before the call to get the start time of decoding and after the call to get the end time.&amp;lt;br&amp;gt;&lt;br /&gt;
6. Difference of the two gave us the decoding time, which can be printed on command line.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;let start_time=precise_time_ns();&lt;br /&gt;
 let image = load_from_memory(data.as_slice());&lt;br /&gt;
 let end_time=precise_time_ns();&lt;br /&gt;
 let required_time=(end_time-start_time) as f64/1000000f64;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Rebuild Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Run Tests ==&lt;br /&gt;
We tested images with different file formats and resolution using ./mach run image_url.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_5.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
These are the results we got:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90247</id>
		<title>CSC/ECE 517 Fall 2014/oss M1455 asa</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_M1455_asa&amp;diff=90247"/>
		<updated>2014-10-29T02:13:00Z</updated>

		<summary type="html">&lt;p&gt;Sanaik2: /* Run Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== EVALUATE REPLACING C IMAGE &amp;amp; FONT LIBRARIES WITH RUST EQUIVALENTS ==&lt;br /&gt;
In this wiki we represent the steps followed in order to implement the taskes assigned under the the above OSS Mozilla Project.&lt;br /&gt;
It required us to make changes to the Servo code base.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Servo is an experimental web browser layout engine being developed by Mozilla Research for new generation hardware.&lt;br /&gt;
The project has a symbiotic relationship with the Rust programming language, in which it is being developed. Rust is a new programming language for developing reliable and efficient systems.&lt;br /&gt;
&lt;br /&gt;
Servo currently depends on a lot of C libraries, because Rust equivalents did not exist when the project started. &lt;br /&gt;
We want to evaluate switching some of these to new Rust libraries that have been created. &lt;br /&gt;
This project involves rewriting the code that uses these libraries as well as taking measurements before and after to determine the costs involved.&lt;br /&gt;
&lt;br /&gt;
== Aim ==&lt;br /&gt;
The aim of our project is display the time required by the decode function to decode images of different formats, e.g, jpeg, bmp, png, gif.&lt;br /&gt;
&lt;br /&gt;
== Steps of Implementation ==&lt;br /&gt;
We implemented the following steps on our linux machine:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''• Build Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1. We first need to clone the servo repository from git using the following command:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://www.github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_1.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Now we have a local copy of the servo codebase.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. We build the servo using&amp;lt;br&amp;gt; &lt;br /&gt;
   ./mach build&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:M1455_2.png|left]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Building servo basically compiling the code along withthe dependent libraries. &amp;lt;br&amp;gt;&lt;br /&gt;
3. Once our servo is built, we have to run a test in order to ensure the build was successful. This is done using the below command &amp;lt;br&amp;gt;&lt;br /&gt;
   ./mach run url &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:M1455_3.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_4.png]]&lt;br /&gt;
&lt;br /&gt;
The above output shows that the html page was successfully launched by the servo browser. Thus proving that the build was successful.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''• Add timing code'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1. In image_cache_task.rs , we have a fn decode which calls the load_from_memory fn in base.rs. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Image decoding is implemented in this load_from_memory function.&amp;lt;br&amp;gt;&lt;br /&gt;
3. So we added the timing code arround this function call in imacge_cache_task.rs&amp;lt;br&amp;gt;&lt;br /&gt;
4. precise_time_ns() gives us the current time.&amp;lt;br&amp;gt;&lt;br /&gt;
5. So we added it before the call to get the start time of decoding and after the call to get the end time.&amp;lt;br&amp;gt;&lt;br /&gt;
6. Difference of the two gave us the decoding time, which can be printed on command line.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;let start_time=precise_time_ns();&lt;br /&gt;
 let image = load_from_memory(data.as_slice());&lt;br /&gt;
 let end_time=precise_time_ns();&lt;br /&gt;
 let required_time=(end_time-start_time) as f64/1000000f64;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''• Rebuild Servo'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Run Tests ==&lt;br /&gt;
We tested images with different file formats and resolution using ./mach run image_url.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M1455_5.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
These are the results we got:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sanaik2</name></author>
	</entry>
</feed>