Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
239 commits
Select commit Hold shift + click to select a range
e9a85a3
Added additional debugging info
LLaeufer Oct 26, 2022
59fcc39
More debug info
LLaeufer Oct 26, 2022
a08e84e
First serialization and deserialization test
LLaeufer Nov 9, 2022
0131ad3
Update Interpreter.hs
LLaeufer Nov 9, 2022
e7a1926
Update ProcessEnvironment.hs
LLaeufer Nov 9, 2022
5cbc874
Updated Value(De)Serialization
LLaeufer Nov 16, 2022
a60a9ff
updated parsing
LLaeufer Nov 21, 2022
bee0f77
first implementation of new commands
LLaeufer Nov 22, 2022
5d86ce9
Early networking implementation, likely not working
LLaeufer Nov 23, 2022
f15b1c6
The recieving portion works now
LLaeufer Nov 23, 2022
15b0e0d
Sending works more or less now
LLaeufer Nov 23, 2022
43484cc
Update client.ldgvnw
LLaeufer Nov 23, 2022
b45e381
Added option for variables
LLaeufer Nov 23, 2022
6e8ddee
Update Interpreter.hs
LLaeufer Nov 23, 2022
73f55c5
Moved Common networking code
LLaeufer Nov 23, 2022
fa8961e
additional patch
LLaeufer Nov 28, 2022
256ced1
Added Server Implementation that could support multible clients
LLaeufer Nov 28, 2022
537d1e4
Better client networking
LLaeufer Nov 29, 2022
2af69c2
progress towards explicit send support
LLaeufer Nov 29, 2022
ea019ea
Explicit send works now
LLaeufer Nov 29, 2022
2d1716a
Added new serializer
LLaeufer Nov 30, 2022
5bb5d38
Added networking messages
LLaeufer Nov 30, 2022
a0975fe
Server code
LLaeufer Nov 30, 2022
f3b54d2
Update Server.hs
LLaeufer Nov 30, 2022
6ce7e71
More code towards the networking
LLaeufer Dec 1, 2022
81c4b76
Server and client now introduce themselves
LLaeufer Dec 1, 2022
09cb7e0
Update Interpreter.hs
LLaeufer Dec 2, 2022
b2de194
Small name refactor
LLaeufer Dec 2, 2022
982a0ee
Update ProcessEnvironment.hs
LLaeufer Dec 2, 2022
6c47f6a
Switched from Channels to CommunicationChannels
LLaeufer Dec 3, 2022
2efc786
Added examplecode for chan handoff
LLaeufer Dec 3, 2022
7d3d1d6
Work towards sending VChans
LLaeufer Dec 3, 2022
f92ec13
VChans are now sendable
LLaeufer Dec 3, 2022
e317977
Fixed crashbug in DirectionalConnection
LLaeufer Dec 3, 2022
ea09a65
More work towards channel sending
LLaeufer Dec 5, 2022
f3161a3
Progress towards sending vchans
LLaeufer Dec 5, 2022
a75b78d
More debug messages
LLaeufer Dec 5, 2022
936b175
fixed a bug where the partner userid was used instead of the own
LLaeufer Dec 5, 2022
d293d15
Update ProcessEnvironment.hs
LLaeufer Dec 5, 2022
1492b45
added new networking code
LLaeufer Dec 6, 2022
c12cbd2
updated clients to have a sock
LLaeufer Dec 6, 2022
4db4afa
Cleaned up code
LLaeufer Dec 6, 2022
a891bc9
Update Client.hs
LLaeufer Dec 7, 2022
c47b037
made NetworkConnection serializable
LLaeufer Dec 7, 2022
ef8e344
New communication protocol
LLaeufer Dec 7, 2022
048c203
Added bidirectional test and fixed a bug associated with it
LLaeufer Dec 7, 2022
3d36f9a
fixed the handoff example code
LLaeufer Dec 7, 2022
f90fb5d
Handoff now works in limited cases
LLaeufer Dec 8, 2022
102eb39
Sending vchans now works initially
LLaeufer Dec 8, 2022
1c7fa3e
Removed unused code
LLaeufer Dec 8, 2022
b1faf5c
Old VChans get now disabled
LLaeufer Dec 8, 2022
72c2c9c
Added support for resynchonization
LLaeufer Dec 8, 2022
9e986de
Added new test
LLaeufer Dec 8, 2022
7023ceb
Update Client.hs
LLaeufer Dec 8, 2022
34025cb
Client sends type now
LLaeufer Dec 14, 2022
efbc546
Experimental Type detection
LLaeufer Dec 14, 2022
9895eed
Update Server.hs
LLaeufer Dec 14, 2022
2c23647
Added a way to convert VChanSerial to VChan
LLaeufer Dec 14, 2022
da9e237
Client now adds redirection notice to redirected VChans
LLaeufer Dec 15, 2022
a497c23
Added message redirection
LLaeufer Dec 16, 2022
f5824a2
Solved a possible race condition (not the one in the example)
LLaeufer Dec 16, 2022
7144494
Communication partners now wait for each other when stopping
LLaeufer Dec 17, 2022
9be84d1
Added another example
LLaeufer Dec 17, 2022
1151a18
Redirect request now work
LLaeufer Dec 18, 2022
3e924d2
Fixed a bug with the end command
LLaeufer Dec 19, 2022
88030ae
Added check to test that every chan is unused
LLaeufer Dec 19, 2022
b328820
Added example for dual handoff
LLaeufer Dec 19, 2022
cbd08d8
Better debug output
LLaeufer Dec 20, 2022
e7792c8
The client now waits for a server
LLaeufer Dec 20, 2022
da4f1ae
Trying to simplify networking code
LLaeufer Dec 20, 2022
51d985f
Minor code cleanup
LLaeufer Dec 20, 2022
78bd52e
Removed unnecessary code
LLaeufer Dec 23, 2022
5cbad69
Clean up
LLaeufer Dec 23, 2022
50b532c
Removed the need for the create command
LLaeufer Dec 24, 2022
bf1ee5b
Experimental fix for MacOS
LLaeufer Jan 3, 2023
cb6a584
Slightly more elegant fix for MacOS
LLaeufer Jan 3, 2023
61bdabc
Create TODO
LLaeufer Jan 9, 2023
bd69ae6
Made end less code more stable
LLaeufer Jan 21, 2023
9e98bf7
Improved sync when sending values
LLaeufer Jan 23, 2023
2a06d75
Improved request sync
LLaeufer Jan 23, 2023
2b6c22c
Threaded receiving messages experimental
LLaeufer Jan 23, 2023
4d0b787
Seems to be rather stable without end now
LLaeufer Jan 24, 2023
1319045
Removed Console spam
LLaeufer Jan 24, 2023
5ea6d59
Seems to run stable enough without end command now
LLaeufer Jan 24, 2023
55a3b9c
Added code that should be later useful for fast networking
LLaeufer Jan 24, 2023
eb07bc9
Added new tests and code for future fast networking
LLaeufer Jan 27, 2023
11416fd
Work towards fast networking
LLaeufer Jan 27, 2023
fef4332
Stateless implementet in new design, still buggy
LLaeufer Jan 30, 2023
a513be8
Slightly more stable now
LLaeufer Jan 30, 2023
c975de5
Added new tests - Bidirhandoff seems stable
LLaeufer Jan 30, 2023
fd41f76
First test with new fast implementation
LLaeufer Jan 30, 2023
55e8288
notes for bugfix
LLaeufer Jan 30, 2023
00de802
Made fast networking more stable?
LLaeufer Jan 31, 2023
7d41491
EOF checks
LLaeufer Jan 31, 2023
bab98a7
Removed deadcode
LLaeufer Feb 1, 2023
2d91964
Removed more deadcode
LLaeufer Feb 1, 2023
facbaaf
Caught some potential exceptions
LLaeufer Feb 1, 2023
d8263b4
Some buglogs with their hopeful solution
LLaeufer Feb 1, 2023
f89ec63
Removed unnecessary code
LLaeufer Feb 2, 2023
b0e6510
Speed and hopefully stability improvements
LLaeufer Feb 2, 2023
9b5733b
Merge pull request #1 from LLaeufer/networking-fast-new
LLaeufer Feb 2, 2023
315af2b
Merge branch 'proglang:master' into networking
LLaeufer Feb 2, 2023
3b9c4c3
Create FastNetworkingBug5.log
LLaeufer Feb 2, 2023
ed2b3e8
Simplified server code
LLaeufer Feb 2, 2023
0bed1ca
I think I fuxed the logic bug, that caused Handoff4 to fail sometimes
LLaeufer Feb 2, 2023
bdb52cf
Fixed a crash triggered when notifying peers of shutdown
LLaeufer Feb 2, 2023
20c990e
Create testNWCountHigh.sh
LLaeufer Feb 2, 2023
e762d0e
Improved stability
LLaeufer Feb 3, 2023
a91206f
Experimental speedup
LLaeufer Feb 3, 2023
8107174
More aggressive timeout for speed
LLaeufer Feb 3, 2023
28ceffe
Only sync when needed
LLaeufer Feb 5, 2023
b07ff27
added networkchannels to interpreter environment
LLaeufer Feb 6, 2023
467dd41
Decluttered VChan code
LLaeufer Feb 6, 2023
26e4650
Fixed tests after modifying the interpreter
LLaeufer Feb 6, 2023
a9b0864
Moved emulated vchans closer in implementation to networked
LLaeufer Feb 6, 2023
6799326
Added new test for emulated handoff - Not yet working
LLaeufer Feb 6, 2023
2c3a0f6
More work towards allowing to send emulated channels
LLaeufer Feb 7, 2023
9a9c633
Added code to allow sending Emulated VChans
LLaeufer Feb 7, 2023
2722d66
More code towards improving handing of of emulated VChans
LLaeufer Feb 7, 2023
830976c
Code for emulated vchan handoff is complete
LLaeufer Feb 7, 2023
060add8
I think its more stable
LLaeufer Feb 8, 2023
d6ac317
Fixed Stateless networking
LLaeufer Feb 9, 2023
adbda71
new type signatures
LLaeufer Feb 9, 2023
34874a5
Improved message handling still buggy
LLaeufer Feb 10, 2023
debeba8
Better logging
LLaeufer Feb 12, 2023
04093a7
Update Server.hs
LLaeufer Feb 12, 2023
f0e15ce
Made the semaphore less strict - stateless networking reenabled
LLaeufer Feb 12, 2023
8d5df99
More logging
LLaeufer Feb 12, 2023
0cf1a70
Removed hIsClosed as it is a dangerous command
LLaeufer Feb 12, 2023
8a6b7b6
Last commit before rewriting again
LLaeufer Feb 13, 2023
d44eb5b
First code for new implementation
LLaeufer Feb 13, 2023
d251498
this probably wont work yet but the structure should be there
LLaeufer Feb 13, 2023
f7be439
Still not compiling, but should include all the major concepts
LLaeufer Feb 13, 2023
c16d8f3
fixes towards getting it compiled later
LLaeufer Feb 13, 2023
f874fcf
Code builds again
LLaeufer Feb 13, 2023
99f163a
Fixed another bug
LLaeufer Feb 13, 2023
9121732
Simple conversations now work
LLaeufer Feb 13, 2023
7fab3ea
Fixed minor logic bug
LLaeufer Feb 13, 2023
5eb8869
Fixed for simple handoff
LLaeufer Feb 13, 2023
6736761
Fixed a bug with serialization
LLaeufer Feb 13, 2023
2243205
Fixed some odd design decision which could lead to wrong disconnects
LLaeufer Feb 13, 2023
7f14e44
Seems to be somewhat stable now
LLaeufer Feb 13, 2023
aa6ef8e
Fixed order of which a new client is added to ldgvnw
LLaeufer Feb 13, 2023
bca46bf
This version seems stable
LLaeufer Feb 14, 2023
4219174
Fixed hypothetical race condition
LLaeufer Feb 14, 2023
c0cc095
Fixed stack test and sending emulated chans
LLaeufer Feb 14, 2023
8a967a6
Merge pull request #2 from LLaeufer/networking-new-typesignatures
LLaeufer Feb 14, 2023
a24b7f5
Removed unnecessary code
LLaeufer Feb 14, 2023
f0102f1
Removed unnecessary code II
LLaeufer Feb 14, 2023
70a1a73
Removed unnecessary code III
LLaeufer Feb 14, 2023
2dcde52
Removed unnecessary code IV
LLaeufer Feb 14, 2023
52323e4
Removed unnecessary code V
LLaeufer Feb 14, 2023
905e96e
Cleanup and fix of logic bug
LLaeufer Feb 14, 2023
2d620e9
Removed unnecessary code VI
LLaeufer Feb 14, 2023
c3f2bbe
Cleanup and seemingly stable
LLaeufer Feb 14, 2023
b223fee
Merge pull request #3 from LLaeufer/networking-cleanup
LLaeufer Feb 15, 2023
c54cba4
Added new NetworkConnection implementation
LLaeufer Feb 20, 2023
408704d
Added new implementation of NetworkConnection
LLaeufer Feb 21, 2023
589bdb6
Fixed "stack test"
LLaeufer Feb 21, 2023
69315b6
Fixed a logic bug in NetworkBuffer
LLaeufer Feb 21, 2023
f980d0f
Every test completes now
LLaeufer Feb 21, 2023
387c413
Fixed horrendously slow speeds
LLaeufer Feb 21, 2023
eb9e12e
Update Client.hs
LLaeufer Feb 21, 2023
651df50
Merge pull request #4 from LLaeufer/networking-cleanup-2
LLaeufer Feb 22, 2023
f62d7ef
Removed DirectionalConnection
LLaeufer Feb 22, 2023
423d816
Clearer name for the partner in handleClient
LLaeufer Feb 22, 2023
432bff0
Lowered Code duplication
LLaeufer Feb 22, 2023
7ccc689
Removed duplicated code
LLaeufer Feb 22, 2023
c4701be
Update ProcessEnvironmentTypes.hs
LLaeufer Feb 22, 2023
6455f6f
Simplified code
LLaeufer Feb 22, 2023
2c3113e
Update RandomID.hs
LLaeufer Feb 22, 2023
d017ba2
Work towards making the Disconnect command obsolete in the future
LLaeufer Feb 23, 2023
ff9685e
Merge pull request #5 from LLaeufer/networking-cleanup-3
LLaeufer Feb 23, 2023
1db174e
Seems stable again
LLaeufer Feb 23, 2023
7527e18
Seems to be stable
LLaeufer Feb 23, 2023
907489e
Update client.ldgvnw
LLaeufer Feb 26, 2023
fabb775
Added new testcase
LLaeufer Feb 26, 2023
9cd85db
Readded Disconnect messages
LLaeufer Feb 26, 2023
987fd0e
Made disconnect faster
LLaeufer Feb 27, 2023
fa2245e
Merge pull request #6 from LLaeufer/networking-cleanup-4
LLaeufer Feb 27, 2023
5d71baa
Removed unnecessary code
LLaeufer Mar 2, 2023
ad78c7d
Sorted imports
LLaeufer Mar 2, 2023
c53ca1b
Renamed Client and Server to something more appropriate
LLaeufer Mar 2, 2023
2a665b4
Fixed a few warnings
LLaeufer Mar 2, 2023
995b3ec
Cleaned up ValueTokens.x
LLaeufer Mar 2, 2023
2a84bcd
Update CPS.hs
LLaeufer Mar 2, 2023
dae63c4
Changed terminology of introduce
LLaeufer Mar 2, 2023
47949a1
Added the recursion test
LLaeufer Mar 2, 2023
7d52e52
Added another test
LLaeufer Mar 2, 2023
e81665c
Gave the recursion test the correct file extention
LLaeufer Mar 6, 2023
3aae692
Moved examples to a better folder
LLaeufer Mar 6, 2023
9ade0ee
Moved tests into appropriate folder
LLaeufer Mar 6, 2023
478171b
Added a Readme
LLaeufer Mar 6, 2023
e6dfd3e
Added new testcase
LLaeufer Mar 6, 2023
3b45a83
Fixed the patch for handoff8 for other situations
LLaeufer Mar 6, 2023
71d7750
Major rewrite of handling incoming and outgoing messages
LLaeufer Mar 7, 2023
d1f52df
Merge pull request #7 from LLaeufer/networking-cleanup-6
LLaeufer Mar 7, 2023
95244fb
Switched to Fedora 37 for my testing container
LLaeufer Mar 7, 2023
3058f68
Update Incoming.hs
LLaeufer Mar 7, 2023
5c64dec
Fixed trying to connect spam when waiting for a connection
LLaeufer Mar 8, 2023
c953039
Updated readme
LLaeufer Mar 8, 2023
c431be8
Fixed naming
LLaeufer Mar 8, 2023
7d60b47
Update README-networking.md
LLaeufer Mar 8, 2023
fa65ec7
Merge pull request #8 from LLaeufer/networking-cleanup-7
LLaeufer Mar 8, 2023
3acb1df
Updated readmes
LLaeufer Mar 8, 2023
eeae8aa
Updated readme
LLaeufer Mar 8, 2023
0a95ab0
Update README-networking.md
LLaeufer Mar 8, 2023
d634898
Update README-networking.md
LLaeufer Mar 8, 2023
d757f49
Update README-networking.md
LLaeufer Mar 9, 2023
5a21127
Update README-networking.md
LLaeufer Mar 9, 2023
d4c7f84
Added information about LDGVNW to the readme
LLaeufer Mar 9, 2023
c1205ad
Cleanup and added info about Buffer to LICENSE
LLaeufer Mar 9, 2023
34da224
Update Incoming.hs
LLaeufer Mar 9, 2023
d800ebb
Receive is now spelled correctly
LLaeufer Mar 9, 2023
5910ee3
Receiving is now also spelled correctly
LLaeufer Mar 9, 2023
4f2c51c
New serialization routine
LLaeufer Mar 10, 2023
cc8870d
Added Tests for Buffer
LLaeufer Mar 10, 2023
d16f2f1
Fixed compile warnings
LLaeufer Mar 10, 2023
3ec8f97
Update README-networking.md
LLaeufer Mar 10, 2023
6854b27
Merge pull request #9 from LLaeufer/networking-cleanup-8
LLaeufer Mar 10, 2023
911e4dc
Update README-networking.md
LLaeufer Mar 11, 2023
531f9ae
Serialization now looks like it did previously
LLaeufer Mar 12, 2023
a07ceb4
Update README-networking.md
LLaeufer Mar 12, 2023
e11c080
Added proper typecheck to accept and connect
LLaeufer Mar 13, 2023
1d321dc
Added new test
LLaeufer Mar 13, 2023
488eb8a
Update README-networking.md
LLaeufer Mar 13, 2023
5d70333
Added new test
LLaeufer Mar 13, 2023
e0bdaae
Update README-networking.md
LLaeufer Mar 13, 2023
06cbc87
Allow to detect a local connection when connecting
LLaeufer Mar 14, 2023
2ed96e1
Reduced code duplication
LLaeufer Mar 14, 2023
68e8f9e
Improved readme
LLaeufer Mar 14, 2023
b725294
Added me to the contributers
LLaeufer Mar 14, 2023
a421571
Update README-networking.md
LLaeufer Mar 15, 2023
79b8ccc
Update README-networking.md
LLaeufer Mar 15, 2023
d0f31c2
Bump resolver, to fix compilation on M1 Macs
LLaeufer May 25, 2023
68efdc2
Updated authors and updated copyright years
LLaeufer Jun 13, 2023
48e71b2
Improved author description
LLaeufer Jun 13, 2023
ed91491
Improved author description #2
LLaeufer Jun 13, 2023
52156fb
Made author description more in line with others
LLaeufer Jun 13, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,6 @@ cabal.project.local~
*.swp
stack.yaml.lock
result
exclude
result*
.vscode
35 changes: 35 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,38 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

-----------------------------------------------------------------------------
The Buffer in the Networking module, is based on the Chan module by The University of Glasgow

The Glasgow Haskell Compiler License

Copyright 2004, The University Court of the University of Glasgow.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

- Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

- Neither name of the University nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
121 changes: 121 additions & 0 deletions README-networking-communication-example.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# A Communication Example of Networking in **LDGVNW**

The following log shows an conversation of 4 conversation partners, running the "bidirhandoff" test.

```
Explanation: Client connects for the first time to the server
Client(4343)->Server(4242)
Message: NIntroduce (String:"qV8Xo421") (String:"4343") (TName (Bool:False) (String:"SendInt")) (TSend (String:"#!") (TInt) (TRecv (String:"#?") (TInt) (TSend (String:"#!") (TInt) (TRecv (String:"#?") (TInt) (TUnit)))))
Response: NOkayIntroduce (String:"Y1lPJ1sM")

Explanation: Client sends the first value to the server
Client(4343)->Server(4242)
Message: NNewValue (String:"qV8Xo421") (Int:0) (VInt (Int:1))
Response: NOkay

Explanation: Server acknowledges the first value from the client
Server(4242)->Client(4343)
Message: NAcknowledgeValue (String:"Y1lPJ1sM") (Int:0)
Response: NOkay

Explanation: Server sends the first value to the client
Server(4242)->Client(4343)
Message: NNewValue (String:"Y1lPJ1sM") (Int:0) (VInt (Int:1300))
Response: NOkay

Explanation: Client acknowledges the first value from the server
Client(4343)->Server(4242)
Message: NAcknowledgeValue (String:"qV8Xo421") (Int:0)
Response: NOkay

Explanation: ServerHandoff connects to the Server
ServerHandoff(4240)->Server(4242)
Message: NIntroduce (String:"nCzR17XT") (String:"4240") (TName (Bool:True) (String:"SendSendIntServer")) (TSend (String:"#!") (TName (Bool:False) (String:"SendIntServer")) (TUnit)
Response: NOkayIntroduce(String:"unFbpEeg")

Explanation: Client connects to the ClientHandoff
Client(4343)->ClientHandoff(4340)
Message: NIntroduce (String:"54AVQX89") (String:"4343") (TName (Bool:False) (String:"SendSendIntClient")) (TSend (String:"#!") (TName (Bool:False) (String:"SendIntClient")) (TUnit))
Response: NOkayIntroduce (String:"dDF0Te3V")

Explanation: Server sends the channel to the ServerHandoff, there are no values in the Handoff since all values are already acknowledged
Server(4242)->ServerHandoff(4240)
Message: NNewValue (String:"unFbpEeg") (Int:0) (VChanSerial (((SValuesArray []) (Int:1) (Int:1))) (((SValuesArray []) (Int:1) (Int:1))) (String:"qV8Xo421") (String:"Y1lPJ1sM") (((String:"127.0.0.1") (String:"4343") (String:"qV8Xo421"))))
Response: NOkay

Explanation: Client sends the channel to the ClientHandoff
Client(4343)->ClientHandoff(4340)
Message: NNewValue (String:"54AVQX89") (Int:0) (VChanSerial (((SValuesArray []) (Int:1) (Int:1))) (((SValuesArray []) (Int:1) (Int:1))) (String:"Y1lPJ1sM") (String:"qV8Xo421") (((String:"127.0.0.1") (String:"4242") (String:"Y1lPJ1sM"))))
Response: NOkay

Explanation: ClientHandoff wants to introduce itself to the Server, but fails since the channel is now owned by the ServerHandoff
ClientHandoff(4340)->Server(4242)
Message: NNewPartnerAddress (String:"qV8Xo421") (String:"4340") (String:"hh0kAZdY")
Response: NRedirect (String:"127.0.0.1") (String:"4240")

Explanation: ServerHandoff wants to introduce itself to the Client, but fails since the channel is now owned by the ClientHandoff
ServerHandoff(4240)->Client(4343)
Message: NNewPartnerAddress (String:"Y1lPJ1sM") (String:"4240") (String:"OUN8jvH1")
Response: NRedirect (String:"127.0.0.1") (String:"4240")

Explanation: ClientHandoff introduces itself to the ServerHandoff
ClientHandoff(4340)->ServerHandoff(4240)
Message: NNewPartnerAddress (String:"qV8Xo421") (String:"4340") (String:"hh0kAZdY")
Response: NOkay

Explanation: ServerHandoff introduces itself to the ClientHandoff
ServerHandoff(4240)->ClientHandoff(4340)
Message: NNewPartnerAddress (String:"Y1lPJ1sM") (String:"4240") (String:"OUN8jvH1")
Response: NOkay

Explanation: ClientHandoff acknowledges the new address of the ServerHandoff
ClientHandoff(4340)->ServerHandoff(4240)
Message: NAcknowledgePartnerAddress (String:"qV8Xo421") (String:"OUN8jvH1")
Response: NOkay

Explanation: ServerHandoff acknowledges the new address of the ClientHandoff
ServerHandoff(4240)->ClientHandoff(4340)
Message: NAcknowledgePartnerAddress (String:"Y1lPJ1sM") (String:"hh0kAZdY")
Response: NOkay

Explanation: Since the ServerHandoff has acknowledged the new address, the ClientHandoff can now acknowledge the successful receiving of the Channel to the Client
ClientHandoff(4340)->Client(4343)
Message: NAcknowledgeValue (String:"dDF0Te3V") (Int:0)
Response: NOkay

Explanation: Since the ClientHandoff has acknowledged the new address, the ServerHandoff can now acknowledge the successful receiving of the Channel to the Server
ServerHandoff(4240)->Server(4242)
Message: NAcknowledgeValue (String:"nCzR17XT") (Int:0)
Response: NOkay


ClientHandoff(4340)->ServerHandoff(4240)
Message: NNewValue (String:"qV8Xo421") (Int:1) (VInt (Int:41))
Response: NOkay

Explanation: Since the client now has all of the values of its active connections acknowledged, it can disconnect
Client(4343)->ClientHandoff(4340)
Message: NDisconnect (String:"54AVQX89")
Response: NOkay

Explanation: Since the server has now all of the values of its active connections acknowledged, it can disconnect
Server(4242)->ServerHandoff(4240)
Message: NDisconnect (String:"unFbpEeg")
Response: NOkay

ServerHandoff(4240)->ClientHandoff(4340)
Message: NAcknowledgeValue (String:"Y1lPJ1sM") (Int:1)
Response: NOkay

ServerHandoff(4240)->ClientHandoff(4340)
Message: NNewValue (String:"Y1lPJ1sM") (Int:1) (VInt (Int:37))
Response: NOkay

ClientHandoff(4340)->ServerHandoff(4240)
Message: NAcknowledgeValue (String:"qV8Xo421") (Int:1)
Response: NOkay

ServerHandoff(4240)->ClientHandoff(4340)
Message: NDisconnect (String:"Y1lPJ1sM")
Response: NOkay
```
Loading