void lmcMessaging::start(void) { lmcTrace::write("Messaging started"); pNetwork->start(); sendBroadcast(MT_Depart, NULL); sendBroadcast(MT_Announce, NULL); }
void CAimProto::avatar_request_handler(HANDLE hContact, char* hash, unsigned char type)//checks to see if the avatar needs requested { if (hContact == NULL) { hash = hash_lg ? hash_lg : hash_sm; type = hash_lg ? 12 : 1; } char* saved_hash = getSetting(hContact, AIM_KEY_AH); if (hash && _stricmp(hash, "0201d20472") && _stricmp(hash, "2b00003341")) //gaim default icon fix- we don't want their blank icon displaying. { if (_strcmps(saved_hash, hash)) { setByte(hContact, AIM_KEY_AHT, type); setString(hContact, AIM_KEY_AH, hash); sendBroadcast(hContact, ACKTYPE_AVATAR, ACKRESULT_STATUS, NULL, 0); } } else { if (saved_hash) { deleteSetting(hContact, AIM_KEY_AHT); deleteSetting(hContact, AIM_KEY_AH); sendBroadcast(hContact, ACKTYPE_AVATAR, ACKRESULT_STATUS, NULL, 0); } } mir_free(saved_hash); }
void lmcMessaging::update(void) { lmcTrace::write("Refreshing contacts list..."); sendBroadcast(MT_Announce, NULL); for(int index = 0; index < userList.count(); index++) sendMessage(MT_Ping, &userList[index].id, NULL); }
void CAimProto::avatar_retrieval_handler(const char* sn, const char* hash, const char* data, int data_len) { bool res = false; PROTO_AVATAR_INFORMATIONT AI = {0}; AI.cbSize = sizeof(AI); AI.hContact = contact_from_sn(sn); if (data_len > 0) { const TCHAR *type; AI.format = detect_image_type(data, type); get_avatar_filename(AI.hContact, AI.filename, SIZEOF(AI.filename), type); int fileId = _topen(AI.filename, _O_CREAT | _O_TRUNC | _O_WRONLY | O_BINARY, _S_IREAD | _S_IWRITE); if (fileId >= 0) { _write(fileId, data, data_len); _close(fileId); res = true; char *my_sn = getSetting(AIM_KEY_SN); if (!_strcmps(sn, my_sn)) CallService(MS_AV_REPORTMYAVATARCHANGED, (WPARAM)m_szModuleName, 0); mir_free(my_sn); } // else // ShowError("Cannot set avatar. File '%s' could not be created/overwritten", file); } else LOG("AIM sent avatar of zero length for %s.(Usually caused by repeated request for the same icon)", sn); sendBroadcast(AI.hContact, ACKTYPE_AVATAR, res ? ACKRESULT_SUCCESS : ACKRESULT_FAILED, &AI, 0); }
void wavrMessaging::start(void) { wavrTrace::write("Messaging started"); pNetwork->start(); // sendBroadcast(MT_Depart, NULL); Make sure you are not already listed, hence send depart message sendBroadcast(MT_Announce, NULL); }
void __cdecl CAimProto::aim_dc_helper(void* param) //only called when we are initiating a direct connection with someone else { file_transfer *ft = (file_transfer*)param; sendBroadcast(ft->hContact, ACKTYPE_FILE, ACKRESULT_CONNECTED, ft, 0); NETLIBPACKETRECVER packetRecv = {0}; packetRecv.cbSize = sizeof(packetRecv); packetRecv.dwTimeout = 350000; HANDLE hServerPacketRecver = (HANDLE) CallService(MS_NETLIB_CREATEPACKETRECVER, (WPARAM)ft->hConn, 2048 * 4); int result; if (ft->sending)//we are sending result = sending_file(ft, hServerPacketRecver, packetRecv); else result = receiving_file(ft, hServerPacketRecver, packetRecv); Netlib_CloseHandle(hServerPacketRecver); Netlib_CloseHandle(ft->hConn); ft->hConn = NULL; if (result == 0) { sendBroadcast(ft->hContact, ACKTYPE_FILE, ACKRESULT_SUCCESS, ft, 0); } else { if (!ft->requester && result == 1 && !Miranda_Terminated()) { ft->accepted = false; HANDLE hConn = aim_peer_connect(AIM_PROXY_SERVER, get_default_port()); if (hConn) { LOG("Connected to proxy ip because we want to use a proxy for the file transfer."); ft->requester = true; ft->hConn = hConn; ForkThread(&CAimProto::aim_proxy_helper, ft); return; } } aim_file_ad(hServerConn, seqno, ft->sn, ft->icbm_cookie, true, 0); sendBroadcast(ft->hContact, ACKTYPE_FILE, ACKRESULT_FAILED, ft, 0); } ft_list.remove_by_ft(ft); }
void boardRegThread::run() { can_fd = open("/dev/can", O_RDWR); if(can_fd < 0) { qDebug()<<"in boardreg thread: can't open can_dev ,can_fd = "<< can_fd <<endl; emit regFault(); return; } else qDebug() <<"In boardRegThread:in boardreg thread: open can_dev successfully!,can_fd = "<< can_fd <<endl; emit regStart();//start ,1 means nothing...forget it .just for the following board info show. //it is signal and slot.see regStartMessage()in boardRegDialog qDebug() << "board registing start..." << endl; if(isSingleBoardRegFlag) { signalBoardReg(singleBoardNum); updateBoardRegFlagToDB(singleBoardNum); close(can_fd); emit singleRegOver(singleBoardNum); qDebug() <<"In boardRegThread:emit singleRegOver signal--- board-flag is :"<< boardRegFlag[singleBoardNum -1]; //after single board regover,isSingleBoardRegFlag=false isSingleBoardRegFlag = false; } else { i = 1;//boardnum ,use as global variable boardRegSum = 0; memset(&boardRegFlag,0,sizeof(boardRegFlag)); sendBroadcast(); /**** single board request registration information command frame */ for( i = 1; i <= BOARDMAXINUM ; i++ )//i = 1; i <= BOARDMAXINUM ; i++ { signalBoardReg(i); } // if( !isReRegisterFlag ) // { saveBoardRegFlagToDB(boardRegFlag); close(can_fd); emit(regAllOver(boardRegSum)); qDebug() <<"In boardRegThread:emit regAllOver signal-----total registerd board number is :"<< boardRegSum; // } // else // { // close(can_fd); // qDebug()<<"IN boardRegThread::run():response system reset !"; // } // qDebug()<<"IN boardRegThread::run(): run() !"; } }
void lmcMessaging::stop(void) { sendBroadcast(MT_Depart, NULL); pNetwork->stop(); pSettings->setValue(IDS_STATUS, localUser->status); pSettings->setValue(IDS_AVATAR, localUser->avatar); saveGroups(); lmcTrace::write("Messaging stopped"); }
/* tryLocate() only attempts to get an UDP datagrame and parse IP:port from it, does not actually * attempt to connect to server (this is a non-blocking call that returns immediately), the * connecting attempt is made by its caller, Lemma::tryConnectingWithMaestro() */ void MaestroLocater::tryLocate() { if (!locating) { begin(); } if (millis() - lastBroadcastMillis > 2000) { sendBroadcast(); lastBroadcastMillis = millis(); } /* udpClient is instance of EthernetUDP class, passed to constructor, the parsePacket() function * checks for the presence of a UDP packet, and reports the size. parsePacket() must be called * before reading the buffer with UDP.read(packetBuffer, MaxSize) */ if( udpClient.parsePacket() ) { char packet[RX_BUF_MAX_SIZE]; size_t bytesRead = udpClient.read( packet, RX_BUF_MAX_SIZE ); packet[bytesRead] = 0; PRINT_FUNCTION_PREFIX; Serial.print("raw datagram: "); Serial.println(packet); char name[128]; if ( MessageParser::parsePolo( &packet[0], name, 128, port ) ) { PRINT_FUNCTION_PREFIX; Serial.println("captured valid UDP datagram"); address = udpClient.remoteIP(); sprintf( ip, "%d.%d.%d.%d", address[0], address[1], address[2], address[3] ); PRINT_FUNCTION_PREFIX; Serial.print("IP from UDP datagram: "); Serial.println(ip); PRINT_FUNCTION_PREFIX; Serial.print("port from UDP datagram: "); Serial.println(port); udpClient.stop(); locating = false; } else { PRINT_FUNCTION_PREFIX; Serial.println("not a valid UDP datagram from Noam server broadcast"); port = 0; } } }
MainWindow::MainWindow(EndpointManager* endpointManager, QWidget* parent) : QWidget(parent), mEndpointManager(endpointManager) { connect(mEndpointManager, SIGNAL(failedToConnectToEndpoint(MessageEndpoint*, ConnectionError)), this, SLOT(endpointFailedToConnect(MessageEndpoint*, ConnectionError))); mLayout = new QVBoxLayout(this); setLayout(mLayout); mLocalIdentityWidget = new LocalIdentityWidget(mEndpointManager, this); mLayout->addWidget(mLocalIdentityWidget); mConnectToEndpointButton = new QPushButton("+", this); connect(mConnectToEndpointButton, SIGNAL(clicked()), this, SLOT(connectToEndpoint())); mLayout->addWidget(mConnectToEndpointButton); mBroadcastForEndpointsButton = new QPushButton("Find Local Clients", this); connect(mBroadcastForEndpointsButton, SIGNAL(clicked()), mEndpointManager, SLOT(sendBroadcast())); mLayout->addWidget(mBroadcastForEndpointsButton); mEndpointListWidget = new EndpointListWidget(mEndpointManager, this); mLayout->addWidget(mEndpointListWidget); }
void __cdecl CAimProto::aim_proxy_helper(void* param) { file_transfer *ft = (file_transfer*)param; if (ft->requester) { if (proxy_initialize_send(ft->hConn, username, ft->icbm_cookie)) return;//error } else { if (proxy_initialize_recv(ft->hConn, username, ft->icbm_cookie, ft->port)) return;//error } //start listen for packets stuff NETLIBPACKETRECVER packetRecv = {0}; packetRecv.cbSize = sizeof(packetRecv); packetRecv.dwTimeout = INFINITE; HANDLE hServerPacketRecver = (HANDLE) CallService(MS_NETLIB_CREATEPACKETRECVER, (WPARAM)ft->hConn, 2048 * 4); for (;;) { int recvResult = CallService(MS_NETLIB_GETMOREPACKETS, (WPARAM)hServerPacketRecver, (LPARAM)&packetRecv); if (recvResult == 0) { sendBroadcast(ft->hContact, ACKTYPE_FILE, ACKRESULT_FAILED, ft, 0); break; } if (recvResult == SOCKET_ERROR) { sendBroadcast(ft->hContact, ACKTYPE_FILE, ACKRESULT_FAILED, ft, 0); break; } if (recvResult > 0) { unsigned short length = _htons(*(unsigned short*)&packetRecv.buffer[0]); packetRecv.bytesUsed = length + 2; unsigned short type = _htons(*(unsigned short*)&packetRecv.buffer[4]); if (type == 0x0001) { unsigned short error = _htons(*(unsigned short*)&packetRecv.buffer[12]); switch (error) { case 0x000D: ShowPopup("Proxy Server File Transfer Error: Bad Request.", ERROR_POPUP); break; case 0x0010: ShowPopup("Proxy Server File Transfer Error: Initial Request Timed Out.", ERROR_POPUP); break; case 0x001A: ShowPopup("Proxy Server File Transfer Error: Accept Period Timed Out.", ERROR_POPUP); break; case 0x000e: ShowPopup("Proxy Server File Transfer Error: Incorrect command syntax.", ERROR_POPUP); break; case 0x0016: ShowPopup("Proxy Server File Transfer Error: Unknown command issued.", ERROR_POPUP); break; } } else if (type == 0x0003) { unsigned short port = _htons(*(unsigned short*)&packetRecv.buffer[12]); unsigned long ip = _htonl(*(unsigned long*)&packetRecv.buffer[14]); aim_send_file(hServerConn, seqno, ip, port, true, ft); LOG("Stage %d Proxy ft and we are not the sender.", ft->req_num); } else if (type == 0x0005) { if (!ft->requester) { aim_file_ad(hServerConn, seqno, ft->sn, ft->icbm_cookie, false, ft->max_ver); ft->accepted = true; } sendBroadcast(ft->hContact, ACKTYPE_FILE, ACKRESULT_CONNECTED, ft, 0); int i; for (i = 21; --i; ) { if (Miranda_Terminated()) return; Sleep(100); if (ft->accepted) break; } if (i == 0) { sendBroadcast(ft->hContact, ACKTYPE_FILE, ACKRESULT_FAILED, ft, 0); break; } packetRecv.dwTimeout = 350000; int result; if (ft->sending)//we are sending result = sending_file(ft, hServerPacketRecver, packetRecv); else result = receiving_file(ft, hServerPacketRecver, packetRecv); sendBroadcast(ft->hContact, ACKTYPE_FILE, result ? ACKRESULT_FAILED : ACKRESULT_SUCCESS, ft, 0); break; } } } Netlib_CloseHandle(hServerPacketRecver); Netlib_CloseHandle(ft->hConn); ft_list.remove_by_ft(ft); }
void NotificationManager::sendNotification(int msg) { //LOGD("---test---,sendNotification(%d)", msg); sendBroadcast(&msg, sizeof(msg)); }