Skip to content

Feature: Daemon #3

@Joshsora

Description

@Joshsora
  • Servers should have a required statically defined ID that is used to communicate internally. For example, the gateway server could be 4001, and the world be 4002.
  • Allow for multiple roles, (multiple instances of SOEServer)
    • Roles should load libraries with message handlers, and some kind of StartServer method.
    • Internal "built-in" roles such as Message Director, Client Agents..
  • Read configurations that define the role and configuration of an SOEServer instance
    • Fields should have default values, they do NOT need to appear in a configuration.
    • Each component of an SOEServer should be configurable.

Example Config

/*
    Gateway Server
*/
{
    // General Information
    Name: "Gateway",
    ID: 4001,

    // Connections
    ConnectionManager: {
        MaxConnections: 100
    }

    // Protocol
    Protocol: {
        ProtocolString: "CGAPI_527"
    },

    // Databases
    Databases: {
        GameDB: {
            Backend: "MongoDB",
            Host: "localhost",
            Port: 2199,

            Storables: [
                Character
            ]
        }
    }

    // Logging
    Logger: {
        Filename: "Gateway-dd-mm-yy-HH-mm.log",
        WantLibraryLogging: false,
        WantColors: true,

        WantInfo: false,
        WantError: true,
        WantWarning: true
    }
},

/*
    World Server
*/
{
    // General Information
    Name: "World",
    ID: 4002,

    // Connections
    ConnectionManager: {
        // We only want routed connections from the gateway..
        AllowDirectConnections: false,
        AllowRoutedConnections: true
    }

    // Databases
    Databases: {
        GameDB: {
            Backend: "MongoDB",
            Host: "localhost",
            Port: 2199,

            Storables: [
                Character
            ]
        }
    }

    // Logging
    Logger: {
        Filename: "World-dd-mm-yy-HH-mm.log",
        WantLibraryLogging: false,
        WantColors: true,

        WantInfo: false,
        WantError: true,
        WantWarning: true
    }
}

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions