Giter Club home page Giter Club logo

chuck's People

Contributors

sniperhw avatar tiancaiamao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chuck's Issues

为什么赋值两次?

void stream_socket_init(stream_socket_ *s,int32_t fd)
{
s->on_events = on_events; ---->
s->imp_engine_add = imp_engine_add; ---->
s->type = STREAM;
s->fd = fd;
s->on_events = on_events; ----> 又来一次。
s->imp_engine_add = imp_engine_add; ---->
s->status = SOCKET_READABLE | SOCKET_WRITEABLE;
easy_close_on_exec(fd);
}

几个问题

chk_list.h

static inline chk_list_entry *chk_list_end(chk_list *l) {
return NULL; //这个end,不是l->tail? 为何是NULL?
}


chk_util.h

#ifndef TEMP_FAILURE_RETRY
#define TEMP_FAILURE_RETRY(expression)
({ long int __result;
do __result = (long int)(expression);
while(__result == -1L&& errno == EINTR);
__result;}) //这个地方,单独一个__result干什么的? 不是return ??
#endif

初始化一个signal但是不使用,将触发段错误

local chuck = require("chuck")
local signal = chuck.signal
local signaler = signal.signaler(signal.SIGINT)

--- 不register to engine ,gc的时候会段错误

static int32_t lua_signaler_gc(lua_State L)
{
signaler *s = lua_tosignaler(L,1);
LOCK();
signalers[s->signum] = NULL;
UNLOCK();
release_luaRef(&s->luacallback); -> 这里应该加个判断
close(cast(handle
,s)->fd);
return 0;
}

//fix 不一定非要执行吧,有时候这东东并没有被register.
if(s->callback){
release_luaRef(&s->luacallback);
}

httpserver 启动正常,client就报错

sandy@sandy:~/Documents/chuck$ lua test/lua/httpclient.lua
[ ERROR]2017-02-04-21:29:26.182[3626] dail_ip4_cb():luabind/socket.h:193:error on dail_ip4_cb ./lib/http.lua:135: attempt to call a nil value (method 'Bind')
stack traceback:
./lib/http.lua:135: in field 'new'
./lib/http.lua:278: in function <./lib/http.lua:272>
[C]: in method 'Run'
test/lua/httpclient.lua:45: in main chunk
[C]: in ?

reader_check_size

static inline int32_t reader_check_size(buffer_reader *reader,uint32_t size)
{
uint32_t tmp = reader->pos + size;
return reader->cur->size >= tmp && tmp > size;
}

初始化的时候reader->pos为0,是不是应该是 tmp>=size ?

return reader->cur->size >= tmp && tmp >= size;

请教问题

testtimer.c
line15: chk_timer t = ((chk_timer)ud); //
对应line72-74:
chk_timer *t1,*t2,*t3,*t4,*t5,*t6,*t7,*t8,*t9;
chk_timermgr *m = chk_timermgr_new();
t1 = chk_timer_register(m,1,cb,&t1,tick); // 这里 为什么用&, 而不直接传t1,对应上面line15,chk_timer t = (chk_timer)ud; 写成这样。 没想明白,请教

uint64_t chk_tmer_inctick(uint64_t tick); // 这里 timer,有个拼写错误,写成tmer

sched.lua new_task()和run问题

local emitter_task = new_task(function() ...... end),不用调用emitter_task:run() 或者 sched.run(emitter_task ) 定时器就已经开始执行了,在new_task中 new_tasks[taskd] = true 这一步已经做了

run这个api 是不是应该是这样的
M.run = function ( task, ... )
local taskd
if type(task)=='function' then
taskd = new_task( task )
else
taskd = task
end
new_tasks[taskd] = true;
return taskd
end
把new_tasks[taskd] = true 这行代码 从new_task中移除 加入到 run中 是不是更合适?

minilumen/sched.lua 里面用的event_loop是new了一个。

我现在的gameserver,里面有一个tcpserver,一个httpserver,一个redisclient,三个公用一个event_loop

那么minilumen/sched.lua代码 里面用的event_loop是new了一个。这个是 需要改成上面 公用的那个event_loop吗??

lua test/lua/pbserver.lua

lua: test/lua/pbserver.lua:4: module 'protobuf' not found:
no field package.preload['protobuf']
no file './lib/protobuf.lua'
no file './lib/protobuf.so'
stack traceback:
[C]: in function 'require'
test/lua/pbserver.lua:4: in main chunk
[C]: in ?
已经make啦 lib下边只有http.lua chuck.so

__sync_bool_compare_and_swap

define COMPARE_AND_SWAP(PTR,OLD,NEW) \

({int __result;                                                     \
    do __result = __sync_val_compare_and_swap(PTR,OLD,NEW) == OLD?1:0; \
    while(0);                                                       \
    __result;})

可以直接修改为

define COMPARE_AND_SWAP(PTR,OLD,NEW) \

__sync_bool_compare_and_swap((PTR),(OLD),(NEW))

有增加对mysql支持的计划吗

现实中mysql一般是数据库选型首选,看你的代码是单线程,加入mysql不是很好处理。你有支持的计划吗?或者提供下设计思路

请教

大神,什么时候有空,写个类似Survive的例子;
用minilumen+gameserver,结合起来。

./lib/http.lua
line135: local ret = o.conn:Bind(eventLoop,function (httpPacket)
--没有Bind这个函数,我看 改成 Start 了。

连续send的问题

问一下;
我连续 调用 send;发送的消息,会被合并成一个 data,发送出去;这样接收端,按照单个来解析,就判断出错。

怎么让 调用send,立即发送。而不是合并一起发送?

chk_list.h 文件里 chk_list_pushback 函数

//if push success,return the new size,else return -1
static inline size_t chk_list_pushback(chk_list *l,chk_list_entry *n) {
if(n->next) return chk_error_common;
if(0 == l->size) l->head = l->tail = n;
else {
l->tail->next = n; //这个尾指针的next,不应该是null吗,为何还是自己?
l->tail = n;
}
++l->size;
return chk_error_ok;
}

如果成功返回new size;未返回,实际返回chk_error_ok; 如果失败,返回的chk_error_common 是 1, 也不是-1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.