On Thu, 12 Dec 2019 07:25:17 GMT, Erdem wrote:

When I try to access __gshared variable studentStore, I get undefined identifier error.

source/app.d(26,24): Error: undefined identifier studentStore, did you mean class StudentStore?

What might be the cause of this?

Ok. I've recognized that my initial code was faulty. Here is the working one.

import vibe.d;

struct Student
{
    string name;
    uint number;
}

class StudentStore
{
    Student[][string] store_;
    static Student[0] empty_;

    Student[] getNotes(string id)
    {
         return (id in store_) ? store_[id] : empty_;
    }

}

private __gshared StudentStore studentStore;

shared static this()
{
    studentStore = new StudentStore();
}

void listStudents(HTTPServerRequest req, HTTPServerResponse res)
{
    auto allstudents = studentStore.getNotes(req.session.id);
}

void main()
{
    auto router = new URLRouter;
    router.get("/", staticTemplate!"index.dt");
    router.get("*", serveStaticFiles("public/"));

    auto settings = new HTTPServerSettings;
    settings.port = 8080;
    settings.bindAddresses = ["::1", "127.0.0.1"];
    listenHTTP(settings, router);

    logInfo("Lütfen tarayıcınızda http://127.0.0.1:8080/ adresini açınız.");
    runApplication();
}

Should I move the line within shared static this {} which constructs a student Store object to main function ? Or leave as is.