void PackManager::Dispatch() { if (m_socketserver == nullptr) { fprintf(stderr, "socketserver ptr is null."); return; } RingBuffer ringbuffer = m_socketserver->GetRecvBuffer(); if (ringbuffer.IsComplete()) { long sz = ringbuffer.GetSize(); if (sz != ringbuffer.Read(m_readbuffer, sz)) { fprintf(stderr, "ringbuffer read data error."); return; } unsigned int version = PVERSION(m_readbuffer); unsigned int opcode = POPCODE(m_readbuffer); //google::protobuf::Message* pMessage = MessageFactory::CreateMessage(opcode); //pMessage->SerializeToArray(m_readbuffer, sz - HEADSIZE); } }
static int __init gfx_inf_init(void) { int rtn = gfx_inf_h_init(GFX_MAX_ALLOWED_SURFACES); // print the driver verision info for futher reference PVERSION(GFX_DRIVER_NAME); if(rtn < 0) { PFATALE("GFX: Failed to initialize device!\n"); return -1; } if (devfs_register_chrdev(GFX_DEV_MAJOR, GFX_DRIVER_NAME, &GfxFops) < 0) { gfx_inf_h_deinit(2); PFATALE("GFX: Failed to register device!\n"); return -1; } devfs_handle = devfs_find_handle(NULL, "stbgfx", 0, 0, DEVFS_SPECIAL_CHR,0); if(devfs_handle == NULL) { devfs_handle = devfs_register(NULL, "stbgfx", DEVFS_FL_DEFAULT, GFX_DEV_MAJOR, 0, S_IFCHR | S_IRUSR | S_IWUSR, &GfxFops, NULL); } else devfs_handle = NULL; /* * Initialize the dma module -- BJC 102102 */ if(gfx_atom_init() != 0) { PFATALE("GFX: Failed to initialize graphics atom!\n"); } return 0; }
void SocketInterface::Update() { RingBuffer& ringbuffer = m_socketserver.GetRecvBuffer(); if (ringbuffer.IsComplete() && ringbuffer.GetSize() > 0) { long sz = ringbuffer.GetSize(); if (sz == 0) { return; } if ((sz+2) != ringbuffer.Read(m_readbuffer, sz+2)) { fprintf(stderr, "ringbuffer read data error."); return; } unsigned int version = PVERSION(m_readbuffer); unsigned int opcode = POPCODE(m_readbuffer); //opcode = 1; google::protobuf::Message* pMessage = MessageFactory::getInstance()->CreateMessage(opcode); if (pMessage == nullptr) { //CCLOG("illegal opcode:[%u].", opcode); return; } pMessage->ParseFromArray(m_readbuffer + 8, sz - 6); /* if (opcode == 1) { CMessageLoginInfoResponse* roleResponse = (CMessageLoginInfoResponse*)pMessage; std::string ver = roleResponse->version(); std::string name = roleResponse->name(); std::string ip = roleResponse->ip(); unsigned int port = roleResponse->port(); unsigned int serial = roleResponse->serial(); CCLOG("Login Server Info: version = %s, name = %s, ip = %s, port = %u, serial = %u", ver.c_str(), name.c_str(), ip.c_str(), port, serial); } else if (opcode == 3) { CMessageLoginServerResponse* serverResponse = (CMessageLoginServerResponse*)pMessage; for (int i = 0; i < serverResponse->lists_size(); i++) { const CMessageLoginServerResponse_ServerList& roleResponse = serverResponse->lists(i); std::string ver = "aass"; std::string name = roleResponse.name(); std::string ip = roleResponse.ip(); unsigned int port = roleResponse.port(); unsigned int serial = roleResponse.serial(); CCLOG("Login Server Info: version = %s, name = %s, ip = %s, port = %u, serial = %u", ver.c_str(), name.c_str(), ip.c_str(), port, serial); } } */ int index = MessageFactory::getInstance()->GetFuncIndex(opcode); if (index < 0 || index >= MessageFactory::MESSAGE_NUM) { //CCLOG("update event:[%u] failed.", opcode); return; } else { if (m_WaitMsg.state != 0 && m_WaitMsg.recvOp == opcode) { if (m_WaitMsg.waitTime != 0) { //通知正在连接状态结束 m_waitCallBackList[m_waitId].waitCallBack(1, m_WaitMsg.sendOp, m_WaitMsg.recvOp); //size_t size = m_waitCallBackList.size(); //if (size > 0) //{ // if (size > 1) // CCLOG("m_waitCallBackList num > 1"); //} } m_WaitMsg.state = 0; m_WaitMsg.sendOp = 0; m_WaitMsg.recvOp = 0; m_WaitMsg.delay = 0; m_WaitMsg.sendTime = 0; m_WaitMsg.waitTime = 0; m_WaitMsg.length = 0; } if (m_events[index]) { m_events[index](opcode, pMessage); } else { //Property::getInstance()->OnMessage(opcode, pMessage); } //CCLOG("register event:[%u] success.", opcode); return; } /* std::map<unsigned int, std::function<int(google::protobuf::Message*)>>::const_iterator iter = m_events.find(opcode); if (iter != m_events.end()) { iter->second(pMessage); } else { CCLOG("illegal opcode:[%u].", opcode); } */ } if (m_WaitMsg.state != 0) { if (m_WaitMsg.sendTime != 0 && GetMillisecondNow() - m_WaitMsg.sendTime > m_WaitMsg.delay) { m_WaitMsg.sendTime = 0; m_WaitMsg.waitTime = GetMillisecondNow(); //通知正在连接中 m_waitCallBackList[m_waitId].waitCallBack(2, m_WaitMsg.sendOp, m_WaitMsg.recvOp); //size_t size = m_waitCallBackList.size(); //if (size > 0) //{ // if (size > 1) // CCLOG("m_waitCallBackList num > 1"); //} } else if (m_WaitMsg.waitTime != 0 && GetMillisecondNow() - m_WaitMsg.waitTime > WAIT_TIME_OUT) { m_WaitMsg.waitTime = 0; //通知连接失败 m_waitCallBackList[m_waitId].waitCallBack(3, m_WaitMsg.sendOp, m_WaitMsg.recvOp); //size_t size = m_waitCallBackList.size(); //if (size > 0) //{ // if (size > 1) // CCLOG("m_waitCallBackList num > 1"); //} } } }