Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
172 commits
Select commit Hold shift + click to select a range
e67f812
Create ParityPartOne.md
JustinCappos Aug 29, 2018
60ddf07
Update ParityPartOne.md
JustinCappos Aug 30, 2018
414e8bf
Update ParityPartOne.md
JustinCappos Sep 4, 2018
64dea2f
Adding IFL security layer.
JustinCappos Sep 4, 2018
55e2b2c
Don't need file size
JustinCappos Sep 13, 2018
2d1ae25
Update ParityPartOne.md
JustinCappos Sep 13, 2018
f901156
Updating the instructions
SanjayTr Oct 8, 2018
e3bdc2e
Merge pull request #41 from SanjayTr/patch-1
JustinCappos Oct 8, 2018
aa9d1fb
Merge pull request #38 from SeattleTestbed/JustinCappos-ParityAssignment
JustinCappos Oct 8, 2018
16478a0
Fix code style in Parity assignment
aaaaalbert Oct 9, 2018
1025f7b
Merge pull request #43 from SanjayTr/master
JustinCappos Oct 18, 2018
8362efe
2
SanjayTr Oct 18, 2018
c959fd8
Reverting ABStoragePartTwo
SanjayTr Oct 19, 2018
6cd7767
Merge pull request #46 from SanjayTr/patch-4
JustinCappos Oct 19, 2018
91e911a
Merge pull request #44 from SanjayTr/SanjayTr-patch-1
JustinCappos Oct 19, 2018
342921b
n
JustinCappos Oct 19, 2018
e8f3663
line 152, removing '?'
SanjayTr Oct 19, 2018
628170d
Merge pull request #47 from SanjayTr/patch-6
JustinCappos Oct 19, 2018
1d72cbb
Merge pull request #48 from SanjayTr/master
JustinCappos Oct 20, 2018
a121f19
Adding RepyParityError
SanjayTr Oct 20, 2018
c0238f6
Merge pull request #49 from SanjayTr/patch-7
JustinCappos Oct 20, 2018
ddd90aa
Updating naming convention
SanjayTr Oct 25, 2018
47685b4
Updating naming convention
SanjayTr Oct 25, 2018
23391a7
Merge pull request #51 from SanjayTr/patch-9
JustinCappos Oct 25, 2018
d1ded4a
Merge pull request #50 from SanjayTr/patch-8
JustinCappos Oct 25, 2018
a402800
Updating instructions
SanjayTr Oct 26, 2018
878d819
Merge pull request #52 from SanjayTr/patch-10
JustinCappos Oct 26, 2018
72931de
Assignment clarification
Jan 20, 2019
3d4804d
Clarification of assignment
Jan 20, 2019
2ae579f
Merge pull request #54 from Kurlee/master
JustinCappos Jan 21, 2019
5e33e55
Quick update ABStoragePartOne.md
paoga87 Sep 7, 2019
6fed26d
Merge pull request #55 from paoga87/patch-1
JustinCappos Sep 7, 2019
621e14e
Updating link to CCS paper
JustinCappos Sep 18, 2019
4feabc3
Broken link fix
JustinCappos Sep 18, 2019
f714bb0
Update ProtectFilePartTwo.md
JustinCappos Sep 18, 2019
1bdd319
Update PermissionsPartTwo.md
JustinCappos Sep 18, 2019
a5d99cf
Update ABStoragePartTwo.md
JustinCappos Sep 18, 2019
ecca06d
Update PermissionsPartOne.md
JustinCappos Sep 18, 2019
bc203b3
Update PrivateWritePartOne.md
JustinCappos Sep 18, 2019
45fc7fd
Update PrivateWritePartTwo.md
JustinCappos Sep 18, 2019
d9082a7
Update SetMaxFileSizePartOne.md
JustinCappos Sep 18, 2019
99696b6
Update ParityPartTwo.md
JustinCappos Sep 18, 2019
384762a
Update ParityPartOne.md
JustinCappos Sep 18, 2019
0f490c9
Update SecurityLayerPartTwo.md
JustinCappos Sep 18, 2019
a3cb722
Update ProtectFilePartOne.md
JustinCappos Sep 18, 2019
f43d8e1
Overview edits
SemicolonExpected Sep 22, 2019
477d17e
Update to match language of Part One
SemicolonExpected Sep 22, 2019
84525b2
Merge pull request #2 from SemicolonExpected/SemicolonExpected-patch-1
SemicolonExpected Sep 22, 2019
9b4f52a
Merge pull request #57 from SemicolonExpected/patch-1
JustinCappos Oct 1, 2019
3246e58
Updated the wiki links to links to the md files
SemicolonExpected Oct 14, 2019
f9e7809
Added the wiki links
SemicolonExpected Oct 14, 2019
235506f
Update advertise.repy.md
SemicolonExpected Oct 14, 2019
c8558bc
Update DORadvertise.repy.md
SemicolonExpected Oct 14, 2019
fa7f694
Update DORadvertise.repy.md
SemicolonExpected Oct 14, 2019
65f80a7
Update NodeAdvertising.md
SemicolonExpected Oct 14, 2019
9d73cc5
Update centralizedadvertise.repy.md
SemicolonExpected Oct 14, 2019
a082194
Update AdvertiseObjects.repy.md
SemicolonExpected Oct 14, 2019
1d212df
Update NAT_advertisement.repy.md
SemicolonExpected Oct 14, 2019
2736ae9
Update Cryptography.md
SemicolonExpected Oct 14, 2019
b402819
Update Time.md
SemicolonExpected Oct 14, 2019
41cd9ef
Update time.repy.md
SemicolonExpected Oct 14, 2019
870aad8
Update rsa.repy.md
SemicolonExpected Oct 14, 2019
3d6b612
Update sshkey.repy.md
SemicolonExpected Oct 14, 2019
88d049a
Update signeddata.repy.md
SemicolonExpected Oct 14, 2019
7af7322
Update DataEncoding.md
SemicolonExpected Oct 14, 2019
c4cf0d7
Update ConcurrencyAndParallelism.md
SemicolonExpected Oct 14, 2019
3d4ef97
Update UrlParsingAndXml.md
SemicolonExpected Oct 14, 2019
493f6b6
Update xmlrpc_common.repy.md
SemicolonExpected Oct 14, 2019
0cb13c7
Update semaphore.repy.md
SemicolonExpected Oct 14, 2019
8168d5a
Update uniqueid.repy.md
SemicolonExpected Oct 14, 2019
8bc5a82
Update DataRetrieval.md
SemicolonExpected Oct 14, 2019
4bce8db
Update NetworkCommunication.md
SemicolonExpected Oct 14, 2019
8010dc4
Update ProgrammerResources.md
SemicolonExpected Oct 14, 2019
a6c6f01
Update ProgrammerResources.md
SemicolonExpected Oct 14, 2019
16a0c5f
Update SeattleLib.md
SemicolonExpected Oct 14, 2019
af1c36c
Merge pull request #59 from SemicolonExpected/patch-3
JustinCappos Oct 14, 2019
89b11f2
Merge pull request #58 from SemicolonExpected/patch-2
JustinCappos Oct 14, 2019
542aeb4
Update README.md
SemicolonExpected Oct 14, 2019
ec01770
Update httpserver.repy.md
aBorovtsov1994 Oct 14, 2019
61128ee
Merge pull request #60 from aBorovtsov1994/patch-1
JustinCappos Oct 14, 2019
2386668
Update ContributorsPage.md
SemicolonExpected Oct 14, 2019
3c111c1
Update LipstickOnAPigExceptionHierarchy.md
SemicolonExpected Oct 14, 2019
caaf858
Update SeattleShellBackend.md
SemicolonExpected Oct 14, 2019
9785f93
Update ContributorsPage.md
SemicolonExpected Oct 14, 2019
2a878aa
Update SecurityLayerPartOne.md
SemicolonExpected Oct 14, 2019
9d765ae
Update EducatorsPage.md
SemicolonExpected Oct 14, 2019
652a4d4
Merge pull request #61 from SemicolonExpected/patch-2
JustinCappos Oct 14, 2019
2dab87b
Update to fix markdown
decidedlygray Mar 26, 2020
c667ff4
Merge pull request #62 from decidedlygray/patch-1
JustinCappos Mar 26, 2020
0f19b4e
Update ABStoragePartTwo.md
SemicolonExpected Oct 1, 2020
64e2716
Merge pull request #63 from SemicolonExpected/patch-3
JustinCappos Oct 1, 2020
5547cf3
FIXED: Lost instruction
SemicolonExpected Oct 8, 2020
a1fa0ae
Update ABStoragePartOne.md
SemicolonExpected Oct 9, 2020
f4660f5
Merge pull request #64 from SemicolonExpected/patch-1
JustinCappos Oct 9, 2020
04b8bc3
Update ABStoragePartTwo.md
sstenchever Oct 12, 2020
a150db8
Merge pull request #65 from sstenchever/patch-1
JustinCappos Oct 12, 2020
1e6ebee
Update PythonVsRepyV2.md
sam-maverick Nov 12, 2020
74ba202
Update ABStoragePartOne.md
sam-maverick Nov 13, 2020
6ab2d6c
Merge pull request #70 from sam-maverick/patch-2
JustinCappos Nov 13, 2020
7dd97fb
Merge pull request #69 from sam-maverick/patch-1
JustinCappos Nov 13, 2020
ef321b8
Create LeftPadPartOne.md
JustinCappos Sep 6, 2022
1926fce
Update LeftPadPartOne.md
JustinCappos Sep 6, 2022
8882a04
Update LeftPadPartOne.md
JustinCappos Sep 7, 2022
1c891db
Update LeftPadPartOne.md
Devansh-Patel Sep 8, 2022
49a8ae2
Update EducationalAssignments/LeftPadPartOne.md
Devansh-Patel Sep 8, 2022
07ed8a9
Merge pull request #72 from Devansh-Patel/patch-1
JustinCappos Sep 8, 2022
d551475
Update LeftPadPartOne.md
Devansh-Patel Sep 26, 2022
e018ca3
Merge pull request #73 from Devansh-Patel/patch-3
JustinCappos Sep 27, 2022
1fcd001
Update LeftPadPartOne.md
JustinCappos Oct 4, 2022
2d53af3
Remove extra-credit
Devansh-Patel Oct 5, 2022
59799fa
Update BuildInstructions.md
Devansh-Patel Oct 6, 2022
bbea305
Update BuildInstructions.md
Devansh-Patel Oct 6, 2022
bacb868
Merge pull request #74 from Devansh-Patel/patch-4
JustinCappos Oct 7, 2022
f52ef45
Merge pull request #75 from Devansh-Patel/patch-5
JustinCappos Oct 7, 2022
c0aeb8a
Update LeftPadPartOne.md
Devansh-Patel Oct 7, 2022
8fb6853
Merge pull request #76 from Devansh-Patel/patch-6
JustinCappos Oct 7, 2022
776c666
Create LeftPadPartTwo.md
Devansh-Patel Oct 10, 2022
cf15823
Update LeftPadPartTwo.md
Devansh-Patel Oct 10, 2022
6b20eae
Update LeftPadPartOne.md
Devansh-Patel Oct 18, 2022
ea3d40c
Merge pull request #77 from Devansh-Patel/patch-7
JustinCappos Oct 18, 2022
109cd82
Merge pull request #78 from Devansh-Patel/patch-8
JustinCappos Oct 19, 2022
1af9d35
Update LeftPadPartTwo.md
Devansh-Patel Oct 23, 2022
7835ec8
Merge pull request #79 from Devansh-Patel/patch-9
JustinCappos Oct 23, 2022
771a076
Create LeftPadPartThree.md
Devansh-Patel Oct 25, 2022
cf0ffc7
Update LeftPadPartThree.md
Devansh-Patel Oct 25, 2022
69c4e34
Update EducationalAssignments/LeftPadPartThree.md
JustinCappos Oct 26, 2022
f73afc1
Merge pull request #80 from Devansh-Patel/patch-10
JustinCappos Oct 26, 2022
f65937c
Update LeftPadPartTwo.md
Devansh-Patel Oct 28, 2022
f37d6b4
Update LeftPadPartThree.md
Devansh-Patel Oct 28, 2022
debae4f
Update LeftPadPartTwo.md
Devansh-Patel Oct 28, 2022
c6a2335
Merge pull request #81 from Devansh-Patel/patch-11
JustinCappos Oct 29, 2022
345c788
Remove the line mentioning report
Devansh-Patel Nov 4, 2022
0dfdeb0
Merge pull request #82 from Devansh-Patel/patch-12
JustinCappos Nov 4, 2022
9268409
Create UndoPartOne.md
vchrombie Sep 27, 2023
7a136ce
Update the inadequate defense layer
vchrombie Oct 2, 2023
0c05fa9
Fix issues in the sample defense layer
vchrombie Oct 2, 2023
a9d2725
Merge pull request #83 from vchrombie/undopartone
JustinCappos Oct 2, 2023
b29ad8d
Create UndoPartTwo.md
vchrombie Oct 11, 2023
77b1d90
Update UndoPartTwo.md
vchrombie Oct 13, 2023
ab1f77a
Update UndoPartTwo.md
vchrombie Oct 13, 2023
5fac464
Merge pull request #84 from vchrombie/undoparttwo
JustinCappos Oct 13, 2023
e1e8ac6
Create UndoPartThree.md
vchrombie Oct 23, 2023
0c9ae5e
Merge pull request #85 from vchrombie/undopartthree
JustinCappos Oct 23, 2023
7b1d704
Add `auto_grader.py` script
vchrombie Oct 14, 2023
fb77c9c
Merge pull request #87 from vchrombie/grading-script
JustinCappos Nov 27, 2023
632d371
Update UndoParOne to add more clarifications
vchrombie Nov 20, 2023
713347a
Update EducationalAssignments/UndoPartOne.md
JustinCappos Nov 27, 2023
33cbd7e
Update EducationalAssignments/UndoPartOne.md
JustinCappos Nov 27, 2023
76e8b37
Merge pull request #86 from vchrombie/undo-corrections
JustinCappos Nov 27, 2023
13d2bd0
Add draft for ISP Fall 2024 Assignment 2.1
rrgodhorus Sep 16, 2024
45d46be
Apply suggestions from code review
rrgodhorus Sep 17, 2024
a82c711
Improve given sample code
rrgodhorus Sep 17, 2024
e5fa4a8
Merge pull request #88 from rrgodhorus/master
JustinCappos Sep 18, 2024
8277ceb
Add DefaultPartTwo.md
rrgodhorus Oct 6, 2024
c55766d
edits
rrgodhorus Oct 6, 2024
9ef95bb
edits 2
rrgodhorus Oct 6, 2024
4591171
Merge pull request #89 from rrgodhorus/master
JustinCappos Oct 7, 2024
19cf61e
minor edit to DefaultPartOne
rrgodhorus Oct 8, 2024
af408cf
Merge pull request #90 from rrgodhorus/master
JustinCappos Oct 8, 2024
cfa2464
Add draft for ISP Fall 2024 Assignment 2.3
rrgodhorus Oct 21, 2024
6bf1b8d
Merge pull request #91 from rrgodhorus/master
JustinCappos Oct 22, 2024
019c113
Adding Assignment 2.1 2025 Immutable-versioned files security layer
Oct 6, 2025
3d4bd35
incorporated comments
vgharini Oct 6, 2025
c17e701
Merge pull request #92 from vgharini/immutable-versioned-assignment
JustinCappos Oct 7, 2025
c38c16c
Fixed indentation issue
vgharini Oct 8, 2025
e8d152a
Merge pull request #93 from vgharini/immutable-versioned-assignment
JustinCappos Oct 8, 2025
cc5d7fd
listfiles
vgharini Oct 20, 2025
d154a54
Merge pull request #94 from vgharini/immutable-versioned-assignment
JustinCappos Oct 20, 2025
585d021
ImmutableVersionTwo
vgharini Oct 21, 2025
00708b6
Merge pull request #95 from vgharini/immutable-versioned-assignment
JustinCappos Oct 21, 2025
06c34f6
ImmutableVersionThree
vgharini Oct 21, 2025
262a926
Merge pull request #96 from vgharini/immutable-versioned-assignment
JustinCappos Oct 22, 2025
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
60 changes: 30 additions & 30 deletions Archive/LipstickOnAPigExceptionHierarchy.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Lipstick on a Pig Exception Hierarchy Proposal
# Lipstick on a Pig Exception Hierarchy Proposal


## Overview / Purpose
## Overview / Purpose

The [wiki:Archive/LipstickOnAPig Lipstick on a Pig] strike force is attempting to create a standard exception hierarchy for repy to provide a unified method to allow users to handle exceptions within repy programs.
The [Lipstick on a Pig](LipstickOnAPig.md) strike force is attempting to create a standard exception hierarchy for repy to provide a unified method to allow users to handle exceptions within repy programs.

Currently the Repy library has inconsistent treatment and use of exceptions, which can be confusing and off-putting for new users. Our goal is to come up with a clear, uniform and logical way to present exceptions. The repy library functions have specific needs and goals, and the reflection hierarchy we're proposing reflects this. We are focusing on creating the core exception hierarchy which will be used by the repy library calls themselves; exceptions specific to any seattlelib code will need to augment the hierarchy with their own exceptions.

Expand All @@ -15,9 +15,9 @@ The hierarchy we designed is meant to account for the specific types of errors w

----



## Proposed Repy Hierarchy

## Proposed Repy Hierarchy
----

Below is our proposed exception hierarchy. The RepyException tree is separate from Exception to show how the two are meant to be distinct, although RepyException is a subclass of Python's Exception.
Expand Down Expand Up @@ -53,21 +53,21 @@ PythonException
+-- Builtin exceptions raised due to programmer mistakes (AttributeError, IndexError, NameError, etc)
```



## Comparison to Python and Current Repy Implementation

## Comparison to Python and Current Repy Implementation
----

The python builtins tend to throw the same types of errors, and repy is meant to mimic this behavior. For example, builtins overwhelmingly raise ```TypeError``` when passed an argument of the wrong type, and raise ```ValueError``` when passed an incorrect value (such as a positive number instead of a negative one).

Repy exceptions are also meant to be less cryptic than some of the python exceptions. The socket.* errors for example were quite cryptic for new users, which resulted in the creation of ```AddressError``` rather than using python's ```socket.gaierror```.



### Reused Python Exceptions

### Reused Python Exceptions
----

#### TypeError
#### TypeError
The python library uses [TypeError](http://docs.python.org/library/exceptions.html#exceptions.TypeError) to notify users that an argument of the wrong type was passed to a function. We want to emulate this behavior, as the current repy implementation primarily raises ```Exception``` and gives the description of what argument was incorrect.

For example, the python ```abs``` built-in expects a numeric type. If a string is passed in, it raises a ```TypeError```.
Expand All @@ -76,7 +76,7 @@ Similar behaviour is proposed for repy. For example, if a user tries specifying



#### ValueError
#### ValueError
We want to change the Repy Library to emulate python's builtin API's usage of [ValueError](http://docs.python.org/library/exceptions.html#exceptions.ValueError). Although exact Python behavior differs per implementation and per call (a bad thing, in our opinion) ```ValueError``` tends to be used to indicate that a value of the correct type was passed in, but an invalid value was used.

An example of this is the ```sleep``` API call, which expects a numeric value greater than 0. If a negative number is passed in, a ValueError should be raised
Expand Down Expand Up @@ -105,9 +105,9 @@ socket.gethostbyname_ex("")
```
While this could be considered a network error, it seems reasonable to assume that getting host information from the empty string is obviously a value error, no network checks have to be performed. The repy version of the above code should raise a ```ValueError```



### Network Examples

### Network Examples
----

Network failures can be of particular importance given the nature of repy and the types of programs that tend to get written in it. There are a large number of reasons for why network operations can fail, and we feel python's socket module's interface could be improved upon.
Expand All @@ -116,7 +116,7 @@ Native python's exception types for network related errors are pretty limited. T

Our goal is to make it easy for users to determine precisely what went wrong with a network call, and be able to recover gracefully from these error conditions.

#### Host Name Example
#### Host Name Example
In native python, socket errors are defined in the socket module. Since repy has no concept of modules, and doesn't allow imports, it doesn't make sense to use the code snippet below.
```python
import socket
Expand All @@ -137,7 +137,7 @@ except NetworkAddressError:
#recover from error
```

#### NetworkAddressError
#### NetworkAddressError
One class of errors that users may tend to see often due to the nature of resolution is address errors. In Python these are presented as ```socket.gaierror```, and what the specific cause of the problem is presented in the text of the exception.

Currently several repy network API calls still make use of ```socket.*``` errors. However the socket module is not in the scope of repy user programs, and modules aren't allowed to be imported. This means the current implementation of repy requires workarounds:
Expand Down Expand Up @@ -167,7 +167,7 @@ except NetworkError:
#handle error condition
```

#### Connection Example
#### Connection Example
The way of interacting with sockets is also different from regular python:

```python
Expand Down Expand Up @@ -200,7 +200,7 @@ finally:

The exception handing for both cases are meant to be similar. We aimed to keep the programming model familiar enough to programmers with a python background, but also more user friendly to those just staring out with repy. Just as ```openconn``` and ```sendmess``` provide easy access for users to interact over networks, ```NetworkError``` and its subclasses are meant to facilitate convenient handling of common errors that can occur.

#### ConnectionRefusedError
#### ConnectionRefusedError
In python, the following code snippet raises a ```socket.error```:
```python
import socket
Expand All @@ -217,24 +217,24 @@ s = openconn('127.0.0.1', 12347, '127.0.0.1', 12345)
#a ConnectionRefusedError would be raised
```

#### NetworkDisconnectedError
#### NetworkDisconnectedError
This error is meant to be raised by ```getmyip()```, to indicate that a computer lost it's connection to the internet. The current behavior is ambiguous; ```getmyip``` raises a ```socket.gairerror``` with the message No address associated with hostname".

This error should also be raised if the socket layer raises ```socket.error``` 101: "Network is unreachable". This is currently the exception that is thrown by various network API calls, such as when ```sendmess``` is given an external ip but the network is disconnected






### File System Examples

### File System Examples
----

While the python standard library provides many functions to flexibly interface with the underlying file system, the nature of repy requires a much more restricted subset of allowed operations. Additionally, there are a number of areas (such as file system modes) where the python standard library functions fail "silently" by either not raising an exception or proceeding with unexpected behavior.

The goal of the repy file system exceptions are to make it very clear what error has occurred and to not silently continue.

#### File Open Examples
#### File Open Examples

In native python, most errors with the file system raise a general "IOError" with more specific details in the message. This makes it hard to realize what happened:

Expand All @@ -257,7 +257,7 @@ except FileNotFoundError:
pass
```

#### File Open Mode Example
#### File Open Mode Example

Python "silently" allows some obscure modes with the file system:

Expand All @@ -278,7 +278,7 @@ except InvalidFileModeException:
pass
```

#### Illegal File Names
#### Illegal File Names

Python allows many characters within the open method such as ".." to traverse directories. Because Repy has no concept of "directories" for programs running in the VMs, it must be more restrictive of allowed file names.

Expand All @@ -299,9 +299,9 @@ except IllegalFileNameException:
pass
```



### Resource Errors

### Resource Errors
----

Given the nature of repy, it is necessary to be able to signal users that they have exceeded their allowed resources. There are several types of resources, and some of these errors may be recoverable, some may not. For example, when a program is consuming too much memory, there is no way for a program to catch that exception. However, if a user tries to have too many files open or have too many event handlers at once, it will be possible to catch the exception raised during the attempt to create more, and allow the programmer to take appropriate action.
Expand All @@ -310,9 +310,9 @@ Recoverable resource errors generally fall into two categories: attempting to us

When trying to use a resource that wasn't permitted in a VMl's restrictions file, a ResourceNotAllowedError will be raised. In the case of overusing a resource, a ResourceExhaustedError will be raised. These will make it more clear why an error occured when trying to use a node's resources, and avoid the hacky string parsing currently required for recovery.



## Internal Errors

## Internal Errors
----

The above errors are meant to be the exceptions exposed to users. If a corrupt internal state is detected by repy, an ```InternalError``` will be raised. When this occurs, a user's repy program will terminate instantly. The rationale behind this is that we want to hide potential repy weaknesses to typical users, and ensure that a corrupt VM doesn't resume execution in a potentially harmful state.
Expand All @@ -324,12 +324,12 @@ If this occurs in a ```try...finally``` block, the finally block will not get ex
Information regarding the internal error will get privately logged, to provide seattle developers some insight regarding what caused the problem, and do postmortem analysis.




## Unresolved Questions/Issues

## Unresolved Questions/Issues
----

There are a number of problems/questions we weren't sure the most appropriate way to handle. We'd appreciate any feedback regarding these issues
* What type of error should be raised if a user's IP address changes? If a program has event handlers associated with an IP address and that changes, how should the user be notified?
* The biggest concern for changing IP's is how to notify the user. It's easy to imagine the scenario where the only thing keeping a program in execution (rather than terminating) is event handlers waiting to be triggered. So if a program has a recvmess handler waiting to receive UDP packets, but the machine's IP changes, how do we notify the user in a meaningful way? If there's no context to which allow them to catch an exception we raised, does it even make sense to? Plus, recvmess is provided a localip, which is no longer valid! It's conceivable that users would write their own logic to periodically check the IP, and if it changes, then to update the event handlers accordingly. As to how/if repy should detect these (and possibly unregister stale listeners) is still uncertain...
* Should an exception should be thrown if the interface and destination IP don't match? I.e. ```sendmess("google.com",80, "hi", "127.0.0.1", 12345)```
* Should an exception should be thrown if the interface and destination IP don't match? I.e. ```sendmess("google.com",80, "hi", "127.0.0.1", 12345)```
7 changes: 7 additions & 0 deletions Contributing/BuildInstructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,13 @@ directory which will be created as a sub-directory inside your main
repository. It takes its instructions from `config_initialize.txt` to
fetch the dependencies.

Make sure that you are using python 2.7 for initializing and building to
avoid any errors with building. To use python 2.7, you can do:

```sh
$ python2 initialize.py
```

3. To build a runnable component from the source dependencies, run the
`scripts/build.py` script. You may supply it an optional target folder for
the build (which must be created first). Name this folder as you like.
Expand Down
Loading