Skip to content
/ loki Public
forked from starwing/loki

loki - the lightweight online game framework

Notifications You must be signed in to change notification settings

kspine/loki

This branch is up to date with starwing/loki:extract_loader.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ba0b361 · Sep 30, 2016

History

77 Commits
Sep 30, 2016
Sep 16, 2016
Aug 22, 2016
Jan 28, 2016
Jan 21, 2016
Jul 21, 2016
Sep 30, 2016
Sep 30, 2016
Aug 16, 2016
Sep 30, 2016
Sep 30, 2016
Sep 30, 2016
Sep 30, 2016
Sep 30, 2016

Repository files navigation

loki - one-header online game framework

loki is a online game framework, inspired by cloudwu's skynet.

To start, see the header file loki.h. loki now doesn't have documentations for now, but I will finish that after complete the built-in service.

loki is not only used in online game server, but more. It's a multi-thread service signal/slot system. Every service register it's own slots, and send/receive message to offer service.

loki only have one header as it's core. To define loki functions (only allow in only one C file), define LOKI_IMPLEMENTATION before include loki.h. loki also has several built-in service, that will defined as lsvr_*.c files, each file can singly build as a DLL/so file, or build together with lsvr_init.c file.

In loki, you must create a lk_State to contain all information loki used, loki doesn't use global variables. A lk_State is also a lk_Service, and a lk_Service is also a lk_Slot. To get the name of a slot, just cast it to const char*. You can emit signals to slot by lk_emit(), and process them in a function called lk_SlotHandler.

A service must have a function named lk_ServiceHandler to register slots. All slots it registered are prefixed the name of the service. Service's name limited to 31 characters, and the name of slot are limited to 63 character.

e.g. If you have a service 'foo' and it create a slot 'bar', then the slot is named 'foo.bar'.

You can find a slot/service by it's name, and send a message to that.After slot process the message, it may return a response message to you by default. This response will directly send to your service. (remember your service is also a slot?)

loki is that simple library offer these message passing service. It can used on Windows or POSIX systems. It can load DLL/so to get new services. If you have a foo.dll on Windows, you should only define a entry function named loki_service_foo, then loki can load it and offer new service.

loki uses multi-thread, but every single service's handler are running in order, just like other single thread programs. You needn't use locks in a single service, you can use message to communicate with other service to avoid the use of locks.

loki offers such built-in service:

  • timer: register timer to callback after several times.
  • task: to run a long-time task in other thread, or run a poll thread backward.
  • socket: offer network ability. Implemented my other library znet.
  • harbor: multi-process loki server support.
  • logger: logger whatever you want.
  • monitor: to get internal informations about loki services.

PLAN

Loki's core library is completed. The built-in services are work-in-progress.

License

Loki use MIT license.

About

loki - the lightweight online game framework

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 100.0%