filestoraged/src/server/context.cr

30 lines
896 B
Crystal
Raw Normal View History

2020-01-02 09:21:11 +01:00
# keep track of connected users and their requests
# TODO: requests should be handled concurrently
class User
property uid : Int32
property token : FileStorage::Token
property uploads : Array(FileStorage::UploadRequest)
property downloads : Array(FileStorage::DownloadRequest)
2020-01-02 09:21:11 +01:00
def initialize(@token,
@uploads = Array(FileStorage::UploadRequest).new,
@downloads = Array(FileStorage::DownloadRequest).new)
2020-01-02 09:21:11 +01:00
@uid = token.uid
end
end
class Context
class_property service_name = "filestorage"
class_property storage_directory = "./storage"
# list of connected users (fd => uid)
class_property connected_users = Hash(Int32, Int32).new
# users_status: keep track of the users' status even if they are
# disconnected, allowing the application to handle connection problems
class_property users_status = Hash(Int32, User).new
class_property service : IPC::Service? = nil
end