【skynet学习笔记】skynet的目录结构

skynet目录结构

  • 学习skynet必须先了解一下skynet的目录结构。
  • skynet的目录结构十分清晰,一目了然。
  • 下面来具体看看各个目录。
[root@lzw skynet]# tree -f -L 1
.
├── ./3rd
├── ./cservice
├── ./examples
├── ./HISTORY.md
├── ./LICENSE
├── ./luaclib
├── ./lualib
├── ./lualib-src
├── ./Makefile
├── ./platform.mk
├── ./README.md
├── ./service
├── ./service-src
├── ./skynet
├── ./skynet-src
└── ./test

目录结构分析

3rd目录

  • ./3rd:存放第三方库里面包括了:jemalloc,lpeg,lua,lua-md5

    • jemalloc:是个内存管理库,可以提高内存是利用率,减少内存碎片。skynet中可以通过编译选项来决定是否使用这个库。
    • lpeg:是一个模式匹配库。
    • lua:lua源代码,目前skynet1.5.0用的lua版本是5.4.4。
    • lua-md5:一个lua的md5库。
[root@lzw skynet]# tree -f -L 1 3rd/
3rd
├── 3rd/jemalloc
├── 3rd/lpeg
├── 3rd/lua
└── 3rd/lua-md5

cservice目录

  • cservice目录存放c语言实现的skynet服务
[root@lzw skynet]# tree -f -L 1 cservice/
cservice
├── cservice/gate.so
├── cservice/harbor.so
├── cservice/logger.so
└── cservice/snlua.so
  • examples:存放skynet的一些官方的例子,这里不展开介绍了,后面会逐个分析一下各个例子。
[root@lzw skynet]# tree -f -L 1 examples/
examples
├── examples/abort.lua
├── examples/agent.lua
├── examples/checkdeadloop.lua
├── examples/client.lua
├── examples/cluster1.lua
├── examples/cluster2.lua
├── examples/clustername.lua
├── examples/config
├── examples/config.c1
├── examples/config.c2
├── examples/config_log
├── examples/config.login
├── examples/config.mc
├── examples/config.mongodb
├── examples/config.mysql
├── examples/config.path
├── examples/config.userlog
├── examples/globallog.lua
├── examples/injectlaunch.lua
├── examples/login
├── examples/main_log.lua
├── examples/main.lua
├── examples/main_mongodb.lua
├── examples/main_mysql.lua
├── examples/preload.lua
├── examples/protoloader.lua
├── examples/proto.lua
├── examples/share.lua
├── examples/simpledb.lua
├── examples/simplemonitor.lua
├── examples/simpleweb.lua
├── examples/simplewebsocket.lua
├── examples/userlog.lua
└── examples/watchdog.lua

luaclib目录

  • luaclib目录存放.so库
[root@lzw skynet]# tree -f -L 1 luaclib/
luaclib
├── luaclib/bson.so
├── luaclib/client.so
├── luaclib/clientws.so
├── luaclib/lpeg.so
├── luaclib/ltls.so
├── luaclib/md5.so
├── luaclib/mysqlaux.so
├── luaclib/skynet.so
├── luaclib/sproto.so
└── luaclib/wsnetpack.so

lualib目录

  • 存放skynet的lua库
[root@lzw skynet]# tree lualib -L 1
lualib
├── compat10
├── http
├── loader.lua
├── md5.lua
├── skynet
├── skynet.lua
├── snax
├── sprotoloader.lua
├── sproto.lua
└── sprotoparser.lua

lualib-src目录

  • 存放skynetlua库的源码
[root@lzw skynet]# tree -f -L 1 lualib-src
lualib-src
├── lualib-src/lsha1.c
├── lualib-src/ltls.c
├── lualib-src/lua-bson.c
├── lualib-src/lua-clientsocket.c
├── lualib-src/lua-clientwebsocket.c
├── lualib-src/lua-cluster.c
├── lualib-src/lua-crypt.c
├── lualib-src/lua-datasheet.c
├── lualib-src/lua-debugchannel.c
├── lualib-src/lua-memory.c
├── lualib-src/lua-mongo.c
├── lualib-src/lua-multicast.c
├── lualib-src/lua-mysqlaux.c
├── lualib-src/lua-netpack.c
├── lualib-src/lua-profile.c
├── lualib-src/lua-seri.c
├── lualib-src/lua-seri.h
├── lualib-src/lua-sharedata.c
├── lualib-src/lua-sharetable.c
├── lualib-src/lua-skynet.c
├── lualib-src/lua-socket.c
├── lualib-src/lua-stm.c
├── lualib-src/lua-websocketnetpack.c
└── lualib-src/sproto

service目录

  • service目录存放一些lua实现的skynet服务
[root@lzw skynet]# tree -f -L 1 service
service
├── service/bootstrap.lua
├── service/cdummy.lua
├── service/clusteragent.lua
├── service/clusterd.lua
├── service/clusterproxy.lua
├── service/clustersender.lua
├── service/cmaster.lua
├── service/cmemory.lua
├── service/console.lua
├── service/cslave.lua
├── service/datacenterd.lua
├── service/dbg.lua
├── service/debug_agent.lua
├── service/debug_console.lua
├── service/gate.lua
├── service/launcher.lua
├── service/multicastd.lua
├── service/service_cell.lua
├── service/service_mgr.lua
├── service/service_provider.lua
├── service/sharedatad.lua
├── service/snaxd.lua
└── service/wsgate.lua

service-src目录

  • service-src目录存放c语言写的服务的源码
[root@lzw skynet]# tree -f -L 1 service-src
service-src
├── service-src/databuffer.h
├── service-src/hashid.h
├── service-src/service_gate.c
├── service-src/service_harbor.c
├── service-src/service_logger.c
└── service-src/service_snlua.c

skynet-src目录

  • skynet-src目录存放skynet的核心c语言源码
[root@lzw skynet]# tree -f -L 1 skynet-src
skynet-src
├── skynet-src/atomic.h
├── skynet-src/malloc_hook.c
├── skynet-src/malloc_hook.h
├── skynet-src/rwlock.h
├── skynet-src/skynet_daemon.c
├── skynet-src/skynet_daemon.h
├── skynet-src/skynet_env.c
├── skynet-src/skynet_env.h
├── skynet-src/skynet_error.c
├── skynet-src/skynet.h
├── skynet-src/skynet_handle.c
├── skynet-src/skynet_handle.h
├── skynet-src/skynet_harbor.c
├── skynet-src/skynet_harbor.h
├── skynet-src/skynet_imp.h
├── skynet-src/skynet_log.c
├── skynet-src/skynet_log.h
├── skynet-src/skynet_main.c
├── skynet-src/skynet_malloc.h
├── skynet-src/skynet_module.c
├── skynet-src/skynet_module.h
├── skynet-src/skynet_monitor.c
├── skynet-src/skynet_monitor.h
├── skynet-src/skynet_mq.c
├── skynet-src/skynet_mq.h
├── skynet-src/skynet_server.c
├── skynet-src/skynet_server.h
├── skynet-src/skynet_socket.c
├── skynet-src/skynet_socket.h
├── skynet-src/skynet_start.c
├── skynet-src/skynet_timer.c
├── skynet-src/skynet_timer.h
├── skynet-src/socket_buffer.h
├── skynet-src/socket_epoll.h
├── skynet-src/socket_info.h
├── skynet-src/socket_kqueue.h
├── skynet-src/socket_poll.h
├── skynet-src/socket_server.c
├── skynet-src/socket_server.h
└── skynet-src/spinlock.h

test目录

  • test目录存放skynet的测试代码
[root@lzw skynet]# tree -f -L 1 test
test
├── test/pingserver.lua
├── test/sharemap.sp
├── test/testbson.lua
├── test/testcoroutine.lua
├── test/testcrypt.lua
├── test/testdatacenter.lua
├── test/testdatasheet.lua
├── test/testdeadcall.lua
├── test/testdeadloop.lua
├── test/testdns.lua
├── test/testecho.lua
├── test/testendless.lua
├── test/testharborlink.lua
├── test/testhttp.lua
├── test/testmemlimit.lua
├── test/testmongodb.lua
├── test/testmulticast2.lua
├── test/testmulticast.lua
├── test/testmysql.lua
├── test/testoverload.lua
├── test/testping.lua
├── test/testpipeline.lua
├── test/testqueue.lua
├── test/testredis2.lua
├── test/testrediscluster.lua
├── test/testredis.lua
├── test/testresponse.lua
├── test/testselect.lua
├── test/testservice
├── test/testsha.lua
├── test/testsharetable.lua
├── test/testsm.lua
├── test/testsocket.lua
├── test/teststm.lua
├── test/testterm.lua
├── test/testtimeout.lua
├── test/testtimer.lua
├── test/testtobeclosed.lua
├── test/testudp.lua
└── test/time.lua

总结

  • 以上粗略地介绍了一下skynet的目录结构。后续会逐个分析一下每个目录里的文件以及作用。
  • 在使用skynet进行开发的时候,我们最好不要在skynet这几个目录同级目录建立自己的项目,而是在他的上级目录去创建一个文件夹来包含skynet框架的代码,这样方便我们去更新和维护skynet的源代码。
  • 在某些时候需要对skynet进行扩展时,最好不要直接修改代码,而是以新的模块的方式去扩展,这样更方便日后同步更新skynet框架。

【skynet学习笔记】skynet的目录结构相关推荐

  1. 在linux中建立一个vim的目录,Linux学习笔记一(目录结构、Vim编辑器、用户管理)...

    1.Linux介绍 linux是一个开源.免费的操做系统,其稳定性.安全性.处理多并发已经获得 业界的承认,目前不少企业级的项目都会部署到Linux/unix系统上. Linux主要的发行版: Ubu ...

  2. Linux学习笔记之Linux目录结构、磁盘命名、启动过程

    1.Linux磁盘命名规则 名称的起名规则--/dev/xxyN: 1.Linux下装所有硬件设备的一个目录叫 /dev(devices) 2.Linux没有C盘.D盘.Linux最根上的一个目录叫  ...

  3. cypress学习笔记二:目录结构及登录测试用例

    cypress安装完成后,通过编译器打开cypress的安装目录,可以看到如下结构 integration 一般测试用例会写在integration下面,可以在此文件夹下面新建目录方便管理用例,也可以 ...

  4. Android学习笔记05---项目的目录结构与安装及启动过程分析

    1.a.src文件夹:用来存放java源文件;   b.gen文件夹:开发工具自动创建的文件,有一个R文件,用来登陆资源id,在编译器编译的时    

  5. 《Go语言圣经》学习笔记 第二章 程序结构

    Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...

  6. 《王道计算机组成原理》学习笔记和总目录导航

    <王道计算机组成原理>学习笔记和总目录导读 本篇文章是阅读和学习<王道计算机组成原理>后总结的理论知识笔记导航,专门用于遗忘后复习 下面的文章是我在学习了<王道计算机组成 ...

  7. SQL学习笔记 | 02 SQL语句结构

    SQL学习笔记 | 02 SQL语句结构 一.表的导入 1.表的命名 2.导入步骤 3.导入需注意 二.标准SQL语法 1.语句结构 2.数据表的其他关键词 3.SQL语句的分类 一.表的导入 1.表 ...

  8. skynet 学习笔记分享

    skynet 学习 全篇是我在2020年8月底9月初,连续通宵两个星期完成的. C 和 Lua 的相互调用 Lua 都是对虚拟栈顶进行操作 C 动态库 require "mLualib&qu ...

  9. Linux学习(一)--目录结构

    一.基本介绍 linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录"/",然后在此目录下再创建其他的目录. 记住一句经典的话:在 Linux 世界里,一切皆 ...

最新文章

  1. Makefile和Shell学习笔记
  2. 智能医疗?轻松实现!
  3. [Python]Python操作/管理Mysql学习(一)
  4. IntelliJ IDEA 2020.2.1 发布,Lombok插件可能被官方支持
  5. MacOS sublime-text-removal
  6. CF Gym 100187E Two Labyrinths (迷宫问题)
  7. javascript链式语法
  8. debian架设php,Debian 下搭建php-fastcgi方式,nginx
  9. Boost:分配服务的实例
  10. Oracle 多表 连接 顺序 与 性能关系 测试
  11. 不妨问问自己,学习C语言是为了什么?
  12. 【elasticsearch】总结—elasticsearch启动失败的几种情况及解决
  13. 使用spring+quartz配置多个定时任务
  14. 如何使用GDAL进行AOI裁剪
  15. Android应用开发提高篇(1)-----获取本地IP
  16. 浅谈找到***点后的处理(清理***)
  17. PMP_第4章章节试题
  18. 浙江大学黄杨思博计算机学院,浙江大学节能减排社会实践与科技竞赛成功-浙江大学本科生院.DOC...
  19. 如何使用Xposed+JustTrustMe来突破SSL Pinning
  20. Java支付宝APP支付-统一收单交易退款

热门文章

  1. idea 设置自动换行
  2. HTTP运作方式、报文格式、工作原理
  3. 如何修改mysql表中列的大小?
  4. linux脚本红包,利用adb shell和node.js实现抖音自动抢红包功能(推荐)
  5. linux 监控硬盘读写,干货|监控硬盘读写
  6. 我是怎么样写出开发内功修炼的?秘密都在这里!
  7. 游戏设计的236个技巧pdf
  8. 抖音上热门有时间吗 修改视频md5
  9. RPA 实际操作Excel数据
  10. 陈松松:学习视频制作之前,新手经常有疑问的7个问题