aboutsummaryrefslogtreecommitdiff
path: root/server/server.lisp
blob: 3676121aeee205f421c7125096d84d64703817f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(in-package :remote-snake-server)

(defparameter *server-api* (make-instance 'api))

;;; Not that max buffer size is important (since snake in on a single line, snake coordinate can be cutted !)
(defparameter *server-buffer* (make-array 10000
                                          :element-type '(unsigned-byte 8)
                                          :initial-element 0))

(defun handle-client (buffer) ; echo
  (declare (type (simple-array (unsigned-byte 8) *) buffer)) ; Seems to be to tell lisp which type is buffer
  (let ((request (babel:octets-to-string buffer)))
    (format t "Receive client request: ~a" request)
    (babel:string-to-octets
     (handle-request *server-api* request))))

;;; The server :D
(defun start (host port)
  (usocket:socket-server host port #'handle-client nil :in-new-thread nil :protocol :datagram))