more readable names for some functions
This commit is contained in:
parent
a532a8cc71
commit
52edc75849
11
Hermes/TODO
11
Hermes/TODO
@ -1,10 +1,13 @@
|
|||||||
FEATURES
|
FEATURES
|
||||||
4. message parsable?
|
5. command(whisper, color, quit, count, users), message parsable?
|
||||||
5. command parsable?
|
|
||||||
8. separate main running code from definitions
|
|
||||||
16. plain tcp -> ssl based
|
16. plain tcp -> ssl based
|
||||||
17. fix breaks for improper disconnects from clients
|
17. fix breaks for improper disconnects from clients
|
||||||
18. Add topics after project completion
|
18. Add topics after project completion
|
||||||
|
** regexes to parse strings for different formats -related to 5
|
||||||
|
** put into a list if necessary for manipulation
|
||||||
|
|
||||||
|
** adjust sleep time on all to be 0.1 for more responsiveness
|
||||||
|
** better function names
|
||||||
|
|
||||||
GOOD TO HAVE BUT NOT NECESSARY
|
GOOD TO HAVE BUT NOT NECESSARY
|
||||||
7. maybe fiddle around with irc library (we leave this for future opl classes) no time got other classes
|
7. maybe fiddle around with irc library (we leave this for future opl classes) no time got other classes
|
||||||
@ -14,4 +17,6 @@ additionally save user details and prompt user to use defaults or create
|
|||||||
new ones
|
new ones
|
||||||
10. authentication for databases - to avoid dependencies this is left out
|
10. authentication for databases - to avoid dependencies this is left out
|
||||||
11. user can ask for no of logged in users. - server already reports
|
11. user can ask for no of logged in users. - server already reports
|
||||||
|
even the list of users connected.
|
||||||
|
12. on connection server should also display list of users currently logged in
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
(define host3 "localhost")
|
(define host3 "localhost")
|
||||||
(define port-num 4321)
|
(define port-num 4321)
|
||||||
|
|
||||||
|
; we won't need this. Just me being overzealous
|
||||||
(define hermes-conf (open-output-file "./hermes_client.conf" #:exists'append))
|
(define hermes-conf (open-output-file "./hermes_client.conf" #:exists'append))
|
||||||
(define hermes-conf-s (make-semaphore 1))
|
(define hermes-conf-s (make-semaphore 1))
|
||||||
|
|
||||||
@ -39,6 +40,10 @@
|
|||||||
(displayln "What's your name?")
|
(displayln "What's your name?")
|
||||||
(define username (read-line))
|
(define username (read-line))
|
||||||
|
|
||||||
|
;send the username to the server (username in out)
|
||||||
|
(displayln username out)
|
||||||
|
(flush-output out)
|
||||||
|
|
||||||
(define a (thread
|
(define a (thread
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(displayln-safe "Starting receiver thread." error-out-s error-out)
|
(displayln-safe "Starting receiver thread." error-out-s error-out)
|
||||||
|
@ -32,8 +32,8 @@
|
|||||||
(define (make-connections connections)
|
(define (make-connections connections)
|
||||||
(define (null-cons?)
|
(define (null-cons?)
|
||||||
(null? connections))
|
(null? connections))
|
||||||
(define (add in out)
|
(define (add username in out)
|
||||||
(set! connections (append connections (list (list in out))))
|
(set! connections (append connections (list (list username in out))))
|
||||||
connections)
|
connections)
|
||||||
(define (cons-list)
|
(define (cons-list)
|
||||||
connections)
|
connections)
|
||||||
@ -86,7 +86,7 @@
|
|||||||
(parameterize ([current-custodian main-cust])
|
(parameterize ([current-custodian main-cust])
|
||||||
(define listener (tcp-listen port-no 5 #t))
|
(define listener (tcp-listen port-no 5 #t))
|
||||||
(define (loop)
|
(define (loop)
|
||||||
(accept-and-handle listener)
|
(receive-clients listener)
|
||||||
(loop))
|
(loop))
|
||||||
(displayln-safe "Starting up the listener." error-out-s error-out)
|
(displayln-safe "Starting up the listener." error-out-s error-out)
|
||||||
(thread loop)
|
(thread loop)
|
||||||
@ -108,10 +108,17 @@
|
|||||||
(semaphore-post convs-out-s)
|
(semaphore-post convs-out-s)
|
||||||
(custodian-shutdown-all main-cust)))
|
(custodian-shutdown-all main-cust)))
|
||||||
|
|
||||||
(define (accept-and-handle listener)
|
(define (receive-clients listener)
|
||||||
(define cust (make-custodian))
|
(define cust (make-custodian))
|
||||||
(parameterize ([current-custodian cust])
|
(parameterize ([current-custodian cust])
|
||||||
(define-values (in out) (tcp-accept listener))
|
(define-values (in out) (tcp-accept listener))
|
||||||
|
|
||||||
|
;TODO retrive user name for client here
|
||||||
|
; do some error checking
|
||||||
|
(define username-evt (read-line-evt out))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; increment number of connections
|
; increment number of connections
|
||||||
(semaphore-wait c-count-s)
|
(semaphore-wait c-count-s)
|
||||||
((c-count 'increment))
|
((c-count 'increment))
|
||||||
@ -126,12 +133,13 @@
|
|||||||
(displayln-safe print-no-users convs-out-s convs-out)
|
(displayln-safe print-no-users convs-out-s convs-out)
|
||||||
(flush-output out)
|
(flush-output out)
|
||||||
(semaphore-wait connections-s)
|
(semaphore-wait connections-s)
|
||||||
((c-connections 'add) in out)
|
; TODO add in a username so we have (username input output)
|
||||||
|
((c-connections 'add) username-evt in out)
|
||||||
(semaphore-post connections-s)
|
(semaphore-post connections-s)
|
||||||
|
|
||||||
; start a thread to deal with specific client and add descriptor value to the list of threads
|
; start a thread to deal with specific client and add descriptor value to the list of threads
|
||||||
(define threadcom (thread (lambda ()
|
(define threadcom (thread (lambda ()
|
||||||
(handle in out)))) ; comms between server and particular client
|
(chat_with_client in out)))) ; comms between server and particular client
|
||||||
|
|
||||||
;; Watcher thread:
|
;; Watcher thread:
|
||||||
;; kills current thread for waiting too long for connection from
|
;; kills current thread for waiting too long for connection from
|
||||||
@ -142,7 +150,7 @@
|
|||||||
(sleep 1360)
|
(sleep 1360)
|
||||||
(custodian-shutdown-all cust)))))
|
(custodian-shutdown-all cust)))))
|
||||||
|
|
||||||
(define (handle in out)
|
(define (chat_with_client in out)
|
||||||
; deals with queueing incoming messages for server to broadcast to all clients
|
; deals with queueing incoming messages for server to broadcast to all clients
|
||||||
(define (something-to-say in)
|
(define (something-to-say in)
|
||||||
(define evt-t0 (sync/timeout 60 (read-line-evt in 'linefeed)))
|
(define evt-t0 (sync/timeout 60 (read-line-evt in 'linefeed)))
|
||||||
@ -175,11 +183,11 @@
|
|||||||
|
|
||||||
; extracts output port from a list pair of input and output port
|
; extracts output port from a list pair of input and output port
|
||||||
(define (get-output-port ports)
|
(define (get-output-port ports)
|
||||||
(cadr ports))
|
(caddr ports))
|
||||||
|
|
||||||
; extracts input port
|
; extracts input port
|
||||||
(define (get-input-port ports)
|
(define (get-input-port ports)
|
||||||
(car ports))
|
(cadr ports))
|
||||||
|
|
||||||
; broadcasts received message from clients periodically
|
; broadcasts received message from clients periodically
|
||||||
; TODO before broadcasting the message make sure the ports is still open
|
; TODO before broadcasting the message make sure the ports is still open
|
||||||
@ -199,6 +207,5 @@
|
|||||||
(displayln "Message broadcasted"))])
|
(displayln "Message broadcasted"))])
|
||||||
(semaphore-post messages-s)))
|
(semaphore-post messages-s)))
|
||||||
|
|
||||||
; TODO move to its own file
|
|
||||||
(define stop (serve 4321)) ;; start server then close with stop
|
(define stop (serve 4321)) ;; start server then close with stop
|
||||||
(displayln-safe "Server process started\n" error-out-s error-out)
|
(displayln-safe "Server process started\n" error-out-s error-out)
|
||||||
|
Loading…
Reference in New Issue
Block a user