コード例 #1
0
ファイル: xNetCardInfo.cpp プロジェクト: Hpark11/FIES
BOOL CxNetCardInfo::GetInfo()
{
	ErrMsg = _T("Success!");
	BOOL isNormal = FALSE;
	unsigned long nError;
	
	nError = GetAdaptersInfo( pinfo,&len );
	switch( nError ) {
		case ERROR_SUCCESS:
			isNormal = ParseData();
			break;
		case ERROR_NO_DATA:
			ErrMsg = _T( "No net device information!" );
			break;
		case ERROR_NOT_SUPPORTED:
			ErrMsg = _T( "The system not support GetAdaptersInfo API function!" );
			break;
		case ERROR_BUFFER_OVERFLOW:
			nError = GetAdaptersInfo( pinfo,&len );
			if( nError == 0 )
				isNormal = ParseData();
			else ErrMsg = _T("Unknow error!");
			break;
	}

	return isNormal;
}
コード例 #2
0
void CNetCardInfo::GetInfo()
{
	ErrMsg = _T( "Success!" );

	unsigned long nError;

	nError = GetAdaptersInfo( m_pinfo,&len );
	switch( nError ) {
		case ERROR_SUCCESS:
			ParseData();
			break;
		case ERROR_NO_DATA:
			ErrMsg = _T( "No net device information!" );
			break;
		case ERROR_NOT_SUPPORTED:
			ErrMsg = _T( "The system not support GetAdaptersInfo API function!" );
			break;
		case ERROR_BUFFER_OVERFLOW:
			nError = GetAdaptersInfo( m_pinfo,&len );
			if( nError == 0 )
			{
				ParseData();
				ParseMacAddressList();
			}
			else ErrMsg = _T("Unknow error!");
			break;
	}
}
コード例 #3
0
ファイル: remotedbapi.c プロジェクト: ididy/nezha
/*
 * Create an Database
 */
tDatabase  DBCreate(const char * filename)
{
    if(filename == NULL)
    {
        fprintf(stderr,"filename Error,%s:%d\n", __FILE__,__LINE__);
        filename = "nezha.hdb";
    }        
    /* connect server */
    h = OpenRemoteService(IP_ADDR,PORT);
    if(h == -1)
    {
        exit(-1);   
    }
    /* open database file */
    char Buf[MAX_BUF_LEN] = "\0";
    int BufSize = MAX_BUF_LEN;
    FormatData1(Buf,&BufSize,OPEN_CMD,(char*)filename,strlen(filename));
    SendData(h,Buf,BufSize);
    BufSize = MAX_BUF_LEN;
    RecvData(h,Buf,&BufSize);
    int cmd = -1;
    int DataNum = -1;
    char Data1[MAX_BUF_LEN] = "\0";
    int Data1Size = MAX_BUF_LEN;
    char Data2[MAX_BUF_LEN] = "\0";
    int Data2Size = MAX_BUF_LEN; 
    ParseData(Buf,MAX_BUF_LEN,&cmd,&DataNum,Data1,&Data1Size,Data2,&Data2Size);
    if(cmd != OPEN_RSP || DataNum != 0)
    {
        fprintf(stderr,"Remote DBCreate Error,%s:%d\n", __FILE__,__LINE__);
    }        
    return (tDatabase)&h;
}
コード例 #4
0
ファイル: remotedbapi.c プロジェクト: ididy/nezha
/*
 * delete key/value
 */
int DBDelKeyValue(tDatabase db,tKey key)
{
    if(db == NULL)
    {
        return -1;
    }
    char Buf[MAX_BUF_LEN] = "\0";
    int BufSize = MAX_BUF_LEN;
    int ret = FormatData1(Buf,&BufSize,DELETE_CMD,(char*)&key,sizeof(tKey));
    if(ret == -1)
    {
        return -1;
    }
    SendData(*(tServiceHandler*)db,Buf,BufSize);
    BufSize = MAX_BUF_LEN;
    if(RecvData(*(tServiceHandler*)db,Buf,&BufSize) == 0)
    {
        fprintf(stderr,"Connection Error,%s:%d\n",__FILE__,__LINE__);
        return -1;            
    } 
    int cmd = -1;
    int DataNum = -1;
    char Data1[MAX_BUF_LEN] = "\0";
    int Data1Size = MAX_BUF_LEN;
    char Data2[MAX_BUF_LEN] = "\0";
    int Data2Size = MAX_BUF_LEN; 
    ParseData(Buf,BufSize,&cmd,&DataNum,Data1,&Data1Size,Data2,&Data2Size);
    if(cmd == ERROR_RSP && DataNum == 1)
    {
        fprintf(stderr,"%s,%s:%d\n",Data1, __FILE__,__LINE__);
        return -1;
    }
    return 0;
}
コード例 #5
0
ファイル: Sound.c プロジェクト: RealityFactory/Genesis3D
static	Channel* ReloadData(void *Data)
{
	DSBUFFERDESC	dsBD;
	BYTE *			pbWaveData;
	INT NumBytes;
//	uint8		*data = NULL;
	Channel* channel;

//	if( !Name )
//		return( NULL );
//	if( !GetSoundData( Data, &data ) )
//		return( NULL );

	if( !ParseData( Data, &dsBD, &pbWaveData ) )
		return( NULL );

	NumBytes = dsBD.dwBufferBytes;
	
	//Create the channel
//	if( !CreateChannel( Name, &dsBD, &channel ) )
	if( !CreateChannel(&dsBD, &channel ) )
		return NULL;

	//Fill the channel
	if ( !DSFillSoundBuffer(channel->buffer, pbWaveData, NumBytes))
		return NULL;
	
//	geRam_Free(data);
//	free( data );
	return( channel );
}
コード例 #6
0
ファイル: remotedbapi.c プロジェクト: fghhslk/TCKVDataBaseM3
/*
* Create an Database
*/
int CreateRemoteDB(char *addr, int port, const char * dbName)
{
    if(dbName == NULL)
    {
        fprintf(stderr, "filename Error,%s:%d\n", __FILE__, __LINE__);
        dbName = "default.hdb";
    }
    /* connect server */
    tServiceHandler h = OpenRemoteService(addr, port);
    if(h == -1)
    {
        return -1;
    }
    /* open database file */
    char Buf[MAX_BUF_LEN] = "\0";
    int BufSize = MAX_BUF_LEN;
    FormatData1(Buf, &BufSize, OPEN_CMD, (char*)dbName, strlen(dbName));
    SendData(h, Buf, BufSize);
    BufSize = MAX_BUF_LEN;
    RecvData(h, Buf, &BufSize);
    int cmd = -1;
    int DataNum = -1;
    char Data1[MAX_BUF_LEN] = "\0";
    int Data1Size = MAX_BUF_LEN;
    char Data2[MAX_BUF_LEN] = "\0";
    int Data2Size = MAX_BUF_LEN;
    ParseData(Buf, MAX_BUF_LEN, &cmd, &DataNum, Data1, &Data1Size, Data2, &Data2Size);
    if(cmd != OPEN_RSP || DataNum != 0)
    {
        fprintf(stderr, "CreateRemoteDB Error,%s:%d\n", __FILE__, __LINE__);
        return -1;
    }
    return h;
}
コード例 #7
0
ファイル: read.c プロジェクト: CarbonOS/libsystem
/* IScanner */
static inline int ParseValue(struct IParse *parse, struct ISection *section)
{
	ParseComment(parse);
	ParseSkip(parse);

	/* Value Name */
	char name[MAX_NAME];
	if (!ParseName(parse, name, MAX_NAME)) {
		return 0;
	}

	ParseSkip(parse);
	int code = ParsePeek(parse, 0);
	if (!(code == '=')) {
		return 0;
	}

	ParseRead(parse); /* = */
	ParseSkip(parse);

	/* Value Data */
	char data[MAX_VALUE];
	if (!ParseData(parse, data, MAX_VALUE)) {
		return 0;	
	}

	AddSectionString(section, name, data);
	return 1;
}
コード例 #8
0
ファイル: Daemon.cpp プロジェクト: cmsromadaq/H4DAQ
void Daemon::ErrorStatus(){
	// if entered in this loop for the first time
	if ( !error_)
		{
		dataType errMex;
		errMex.append((void*)"ERROR\0\0",6);
		// send 3 error mex
		connectionManager_->Send(errMex,CmdSck);
		sleep(1);
		connectionManager_->Send(errMex,CmdSck);
		sleep(1);
		connectionManager_->Send(errMex,CmdSck);
		//Reset Members
		if(eventBuilder_)eventBuilder_->Reset();
		//hwManager_-> ???
		if(hwManager_)
			{
			hwManager_->Clear(); // call reset of all board
			//hwManager_->Config(*configurator_); //configure all boards -- ? 
			//hwManager_->Init(); // Init All Boards
			}
		}
	error_=true;
	//wait for instructions
	dataType myMex;
	if (connectionManager_->Recv(myMex) == 0 )
		{
		Command myCmd=ParseData(myMex)	;
		if (myCmd.cmd ==  ENDRUN ){
			error_=false;
			MoveToStatus(INITIALIZED);
			}
		}
	return;			
}
コード例 #9
0
//从文件加载数据
bool CDataManageCenter::LoadDataFromFile(CString FilePath,vector<sShuangSeQiu>& QiuList)
{
	DWORD Flag = OPEN_EXISTING;
	HANDLE FileHandle=CreateFile(FilePath,GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,Flag,FILE_ATTRIBUTE_NORMAL,NULL);
	if(FileHandle == INVALID_HANDLE_VALUE)
		return false;
	DWORD Size = ::GetFileSize(FileHandle,NULL);
	char* Buffer = new char[Size+1];
	memset(Buffer,'\0',Size+1);
	DWORD ReadBytes=0;
	::ReadFile(FileHandle,Buffer,Size,&ReadBytes,NULL);
	CString StrData=CString(Buffer);
	ParseData(StrData,QiuList);
	delete []Buffer;

	//初始化横向差值
/*	InitHengXiangChaZhi(m_ShuangSeQiuList);

	//初始化纵向差值
	InitZongXiangChaZhi(m_ShuangSeQiuList);

	//初始化连号平码
	InitLianHaoHongQiu(m_ShuangSeQiuList);

	//初始化连号特码
	InitLianHaoLanQiu(m_ShuangSeQiuList);
	*/



	return true;
}
コード例 #10
0
ファイル: P1MeterSerial.cpp プロジェクト: swevm/domoticz
bool P1MeterSerial::StartHardware()
{
#ifdef DEBUG_FROM_FILE
	FILE *fIn=fopen("E:\\meter.txt","rb+");
	BYTE buffer[1000];
	int ret=fread((BYTE*)&buffer,1,sizeof(buffer),fIn);
	fclose(fIn);
	ParseData((const BYTE*)&buffer,ret);
#endif
	m_stoprequested = false;
	m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&P1MeterSerial::Do_Work, this)));

	//Try to open the Serial Port
	try
	{
		_log.Log(LOG_STATUS,"P1 Smart Meter: Using serial port: %s", m_szSerialPort.c_str());
		if (m_iBaudRate==9600)
		{
			open(
				m_szSerialPort,
				m_iBaudRate,
				boost::asio::serial_port_base::parity(
				boost::asio::serial_port_base::parity::even),
				boost::asio::serial_port_base::character_size(7)
				);
		}
		else
		{
			//DSMRv4
			open(
				m_szSerialPort,
				m_iBaudRate,
				boost::asio::serial_port_base::parity(
				boost::asio::serial_port_base::parity::none),
				boost::asio::serial_port_base::character_size(8)
				);
		}
	}
	catch (boost::exception & e)
	{
		_log.Log(LOG_ERROR,"P1 Smart Meter: Error opening serial port!");
#ifdef _DEBUG
		_log.Log(LOG_ERROR,"-----------------\n%s\n-----------------",boost::diagnostic_information(e).c_str());
#else
		(void)e;
#endif
		return false;
	}
	catch ( ... )
	{
		_log.Log(LOG_ERROR,"P1 Smart Meter: Error opening serial port!!!");
		return false;
	}
	m_bIsStarted=true;
	m_linecount=0;
	m_exclmarkfound=0;
	setReadCallback(boost::bind(&P1MeterSerial::readCallback, this, _1, _2));
	sOnConnected(this);
	return true;
}
コード例 #11
0
ファイル: client.cpp プロジェクト: desiv/Chat-Yell
void Socket::Recv()
{
	if(connection == true)
	{
		fd_set read_fds = master;
		if( select(s + 1, &read_fds, NULL, NULL, &tv) == -1)
		{
			int err = WSAGetLastError();
			if(err == 0){}
			else
			{
				MessageBox(0, "Function select() has failed!", "ERROR", MB_OK | MB_ICONERROR);
				this->~Socket();
				connection = false;
			}
			
		}

		if(FD_ISSET(s, &read_fds)) // we got something
		{
			if((bytes = recv(s, (char*)Buffer, 1024, 0)) > 0)
			{
				Reader.SetBuffer((unsigned char*)Buffer);
				ParseData(bytes); 
			}
			else 
			{
				SetText("**Connection lost...");
				FD_CLR(s, &read_fds);
				connection = false;
				this->~Socket();
			}
		}
	}
}
コード例 #12
0
ファイル: remotedbapi.c プロジェクト: ididy/nezha
/*
 * Set key/value
 */
int DBSetKeyValue(tDatabase db,tKey key,tValue value)
{
    debug("SET_CMD:%d -> %s\n",key,value.str);
    char Buf[MAX_BUF_LEN] = "\0";
    int BufSize = MAX_BUF_LEN;
    int ret = FormatData2(Buf,&BufSize,SET_CMD,(char*)&key,sizeof(tKey),value.str,value.len);
    if(ret == -1)
    {
        return -1;
    }
    SendData(*(tServiceHandler*)db,Buf,BufSize);
    BufSize = MAX_BUF_LEN;
    if(RecvData(*(tServiceHandler*)db,Buf,&BufSize) == 0)
    {
        fprintf(stderr,"Connection Error,%s:%d\n",__FILE__,__LINE__);
        return -1;            
    } 
    int cmd = -1;
    int DataNum = -1;
    char Data1[MAX_BUF_LEN] = "\0";
    int Data1Size = MAX_BUF_LEN;
    char Data2[MAX_BUF_LEN] = "\0";
    int Data2Size = MAX_BUF_LEN; 
    ParseData(Buf,BufSize,&cmd,&DataNum,Data1,&Data1Size,Data2,&Data2Size);
    if(cmd != SET_RSP || DataNum != 0)
    {
        fprintf(stderr,"Remote DBSetKeyValue Error,%s:%d\n", __FILE__,__LINE__);
        return -1;
    }
    return 0;
}
コード例 #13
0
ファイル: SMOnlineRoom.cpp プロジェクト: freem/SMOnline-v1
void SMOnlineRoom::UpdateClients() {
    int length = 0;
    for (unsigned int x = 0; x < m_clients.size(); ++x)
    {
        if (!m_clients[x])
        {
            LOG->Write("Error: Trying to update NULL client");
            RemoveClient(x);
            continue;
        }

        try
        {
            do
            {
                //As long as we keep getting data from the socket, keep processing it
                length = m_clients[x]->Update(m_packet);
                if (length > 0)
                    ParseData(m_packet, x);
                //Check for NULL incase the client switched rooms
            } while ((length > 0) && (x < m_clients.size()) && (m_clients[x]));
        }
        catch (ClientError&)
        {
            RemoveClient(x);
        }
    }
}
コード例 #14
0
ファイル: remotedbapi.c プロジェクト: AfricanRabbit/nezha
/*
 * Delete the Database
 */
int RemoteDBDelete(int db)
{
    /* close database file */
    char Buf[MAX_BUF_LEN] = "\0";
    int BufSize = MAX_BUF_LEN;
    FormatData(Buf,&BufSize,CLOSE_CMD);
    SendData(db,Buf,BufSize);
    BufSize = MAX_BUF_LEN;
    if(RecvData(db,Buf,&BufSize) == 0)
    {
        fprintf(stderr,"Connection Error,%s:%d\n",__FILE__,__LINE__);
        return -1;            
    }    
    int cmd = -1;
    int DataNum = -1;
    char Data1[MAX_BUF_LEN] = "\0";
    int Data1Size = MAX_BUF_LEN;
    char Data2[MAX_BUF_LEN] = "\0";
    int Data2Size = MAX_BUF_LEN; 
    ParseData(Buf,MAX_BUF_LEN,&cmd,&DataNum,Data1,&Data1Size,Data2,&Data2Size);
    if(cmd != CLOSE_RSP || DataNum != 0)
    {
        fprintf(stderr,"Remote DBDelete Error,%s:%d\n", __FILE__,__LINE__);
        return -1;
    }    
    /* close connection */
    if(CloseRemoteService(db) == -1)
    {
        return -1; 
    }
    return 0;
}
コード例 #15
0
RTCPCompoundPacket::RTCPCompoundPacket(RTPRawPacket &rawpack, RTPMemoryManager *mgr) : RTPMemoryObject(mgr)
{
	compoundpacket = 0;
	compoundpacketlength = 0;
	error = 0;
	
	if (rawpack.IsRTP())
	{
		error = ERR_RTP_RTCPCOMPOUND_INVALIDPACKET;
		return;
	}

	uint8_t *data = rawpack.GetData();
	size_t datalen = rawpack.GetDataLength();

	error = ParseData(data,datalen);
	if (error < 0)
		return;
	
	compoundpacket = rawpack.GetData();
	compoundpacketlength = rawpack.GetDataLength();
	deletepacket = true;

	rawpack.ZeroData();
	
	rtcppackit = rtcppacklist.begin();
}
コード例 #16
0
ファイル: remotedbapi.c プロジェクト: AfricanRabbit/nezha
/*
 * delete key/value
 */
int RemoteDBDelKeyValue(int db,tKey key)
{
    if(db == -1)
    {
        return -1;
    }
    char Buf[MAX_BUF_LEN] = "\0";
    int BufSize = MAX_BUF_LEN;
    int ret = FormatData1(Buf,&BufSize,DELETE_CMD,(char*)key.str,key.len);
    if(ret == -1)
    {
        return -1;
    }
    SendData(db,Buf,BufSize);
    BufSize = MAX_BUF_LEN;
    if(RecvData(db,Buf,&BufSize) == 0)
    {
        fprintf(stderr,"Connection Error,%s:%d\n",__FILE__,__LINE__);
        return -1;            
    } 
    int cmd = -1;
    int DataNum = -1;
    char Data1[MAX_BUF_LEN] = "\0";
    int Data1Size = MAX_BUF_LEN;
    char Data2[MAX_BUF_LEN] = "\0";
    int Data2Size = MAX_BUF_LEN; 
    ParseData(Buf,BufSize,&cmd,&DataNum,Data1,&Data1Size,Data2,&Data2Size);
    if(cmd == ERROR_RSP && DataNum == 1)
    {
        fprintf(stderr,"%s,%s:%d\n",Data1, __FILE__,__LINE__);
        return -1;
    }
    return 0;
}
コード例 #17
0
ファイル: remotedbapi.c プロジェクト: AfricanRabbit/nezha
/*
 * Create an Database
 */
int  RemoteDBCreate(const char * filename,char * addr,int port)
{
    if(filename == NULL)
    {
        fprintf(stderr,"filename Error,%s:%d\n", __FILE__,__LINE__);
        filename = "nezha.hdb";
    }        
    /* connect server */
    tServiceHandler dbhandler = OpenRemoteService(addr,port);
    if(dbhandler == -1)
    {
        return -1;   
    }
    /* open database file */
    char Buf[MAX_BUF_LEN] = "\0";
    int BufSize = MAX_BUF_LEN;
    FormatData1(Buf,&BufSize,OPEN_CMD,(char*)filename,strlen(filename));
    SendData(dbhandler,Buf,BufSize);
    BufSize = MAX_BUF_LEN;
    RecvData(dbhandler,Buf,&BufSize);
    int cmd = -1;
    int DataNum = -1;
    char Data1[MAX_BUF_LEN] = "\0";
    int Data1Size = MAX_BUF_LEN;
    char Data2[MAX_BUF_LEN] = "\0";
    int Data2Size = MAX_BUF_LEN; 
    ParseData(Buf,MAX_BUF_LEN,&cmd,&DataNum,Data1,&Data1Size,Data2,&Data2Size);
    if(cmd != OPEN_RSP || DataNum != 0)
    {
        fprintf(stderr,"Remote DBCreate Error,%s:%d\n", __FILE__,__LINE__);
        return -1; 
    }        
    return dbhandler;
}
コード例 #18
0
ファイル: gmailchecker.cpp プロジェクト: Mezomish/leechcraft
	void GmailChecker::httpFinished ()
	{
		emit canContinue ();

		if (Reply_->error ())
		{
			QString error = tr ("Error");
			error.prepend ("Gmail Notifier: ");

			if (Reply_->attribute (QNetworkRequest::HttpStatusCodeAttribute).toInt () == 401)
				emit anErrorOccupied (error.append (" 401"),
						tr ("The username or password is incorrect"));
			else if (Reply_->error() == QNetworkReply::OperationCanceledError) // When timed out
				emit anErrorOccupied (error, tr ("Connection timeout"));
			else
				emit anErrorOccupied (error, Reply_->errorString ());
		}
		else
		{
			Data_ = QString::fromUtf8 (Reply_->readAll ());
			ParseData ();
		}

		Reply_->deleteLater ();
		Reply_ = 0;
	}
コード例 #19
0
ファイル: remotedbapi.c プロジェクト: AfricanRabbit/nezha
/*
 * Set key/value
 */
int RemoteDBSetKeyValue(int db,tKey key,tValue value)
{
    char Buf[MAX_BUF_LEN] = "\0";
    int BufSize = MAX_BUF_LEN;
    int ret = FormatData2(Buf,&BufSize,SET_CMD,(char*)key.str,key.len,value.str,value.len);
    if(ret == -1)
    {
        return -1;
    }
    SendData(db,Buf,BufSize);
    BufSize = MAX_BUF_LEN;
    if(RecvData(db,Buf,&BufSize) == 0)
    {
        fprintf(stderr,"Connection Error,%s:%d\n",__FILE__,__LINE__);
        return -1;            
    } 
    int cmd = -1;
    int DataNum = -1;
    char Data1[MAX_BUF_LEN] = "\0";
    int Data1Size = MAX_BUF_LEN;
    char Data2[MAX_BUF_LEN] = "\0";
    int Data2Size = MAX_BUF_LEN; 
    ParseData(Buf,BufSize,&cmd,&DataNum,Data1,&Data1Size,Data2,&Data2Size);
    if(cmd != SET_RSP || DataNum != 0)
    {
        fprintf(stderr,"Remote DBSetKeyValue Error,%s:%d\n", __FILE__,__LINE__);
        return -1;
    }
    return 0;
}
コード例 #20
0
ファイル: CHILDWIN.cpp プロジェクト: eggxp/SuperParse
void __fastcall TMDIChild::actGoToNumExecute(TObject *Sender)
{
    String num;
    int value = 0;
    if(InputQuery("输入要转到的记录(10进制, 从0开始)", "转到记录位置", num))
    {
        value = num.ToIntDef(0);
        if(value == 0)
            return;

        int pos = m_HexEditor->SelStart;
        int curNum = 0;

        ClearListHistory();

        while(pos < m_HexEditor->DataSize)
        {
            if(curNum >= num)
                break;
            m_ParseListHistory.push(pos);
            m_ParseTree->UnPackData(pos);
            pos += m_ParseTree->GetSize();
            curNum++;
        }
        edtCurParseCount->Value = curNum;
        m_HexEditor->SelStart = pos;
        ParseData();
    }
}
コード例 #21
0
ファイル: rtsp.c プロジェクト: paluseb/vdr-plugin-satip
bool cSatipRtsp::Teardown(const char *uriP)
{
  debug1("%s (%s) [device %d]", __PRETTY_FUNCTION__, uriP, tunerM.GetId());
  bool result = false;

  if (handleM && !isempty(uriP)) {
     long rc = 0;
     cTimeMs processing(0);
     CURLcode res = CURLE_OK;

     SATIP_CURL_EASY_SETOPT(handleM, CURLOPT_RTSP_STREAM_URI, uriP);
     SATIP_CURL_EASY_SETOPT(handleM, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_TEARDOWN);
     SATIP_CURL_EASY_SETOPT(handleM, CURLOPT_WRITEFUNCTION, cSatipRtsp::DataCallback);
     SATIP_CURL_EASY_SETOPT(handleM, CURLOPT_WRITEDATA, this);
     SATIP_CURL_EASY_PERFORM(handleM);
     SATIP_CURL_EASY_SETOPT(handleM, CURLOPT_WRITEFUNCTION, NULL);
     SATIP_CURL_EASY_SETOPT(handleM, CURLOPT_WRITEDATA, NULL);
     if (dataBufferM.Size() > 0) {
        ParseData();
        dataBufferM.Reset();
        }

     SATIP_CURL_EASY_SETOPT(handleM, CURLOPT_RTSP_CLIENT_CSEQ, 1L);
     SATIP_CURL_EASY_SETOPT(handleM, CURLOPT_RTSP_SESSION_ID, NULL);

     result = ValidateLatestResponse(&rc);
     debug5("%s (%s) Response %ld in %" PRIu64 " ms [device %d]", __PRETTY_FUNCTION__, uriP, rc, processing.Elapsed(), tunerM.GetId());
     }

  return result;
}
コード例 #22
0
ファイル: disk_streamer.hpp プロジェクト: chagge/poseidon
std::vector<DATUM*> DiskStreamer<DATUM>::GetNextData(int num_data) {
  while (true) {
    {
      std::unique_lock<std::mutex> lock(mtx_);
      if (curr_work_buffer_ == 0) {
        return std::vector<DATUM*>(0);   // end of data stream.
      }
      if (curr_work_buffer_->HasMore()) {
        return ParseData(num_data);
      }
      buffer_active_ = false;
    }

    barrier_.wait();
    {
      std::unique_lock<std::mutex> lock(mtx_);
      if (!buffer_active_) {
        // Replace current buffer.
        multi_buffer_.DoneConsumingWorkBuffer();
        curr_work_buffer_ = multi_buffer_.GetWorkBuffer();
        buffer_active_ = true;
      }
    }

    // Without this barrier, thread 1 can replace curr_work_buffer_ with 0
    // (null) and thread 2 immediately get (curr_work_buffer_ == 0) and
    // return, leaving thread 1 waiting at the first barrier_ (deadlock).
    barrier_.wait();
  }
}
コード例 #23
0
ファイル: SMUSync.cpp プロジェクト: sue602/st-nvs
bool SMUSync::ParseWebService(st_netfd_t fd, std::vector<SyncPlatformData>& data_vec)
{
	std::string body;
	ReadInfo(fd, body);
	
	if(body.empty())
	{
		return false;
	}

	{
		DMXml xml;
		xml.Decode(body.c_str());
		
		xml.GetRoot();
		if(!xml.CheckNodeValid())
		{
			WriteToLog("Xml Error");
			return false;
		}

		{
			SyncPlatformData data;
			xml.GetRoot()->FindElement("SyncData");
			if(!xml.CheckNodeValid())
			{
				WriteToLog("Xml Error");
				return false;
			}
			if (ParseData(xml, data))
			{
				data_vec.push_back(data);
			}
		}

		while(xml.FindAllElement("SyncData"))
		{
			SyncPlatformData data;
			if (ParseData(xml, data))
			{
				data_vec.push_back(data);
			}
		}
	}
	return true;

}
コード例 #24
0
ファイル: Teleinfo.cpp プロジェクト: interxis/domoticz
void Teleinfo::readCallback(const char *data, size_t len)
{
	boost::lock_guard<boost::mutex> l(readQueueMutex);
	if (!m_bEnableReceive)
		return; //receiving not enabled

	ParseData((const unsigned char*)data, static_cast<int>(len));
}
コード例 #25
0
void StepManiaLanServer::UpdateClients()
{
	//Go through all the clients and check to see if it is being used.
	//If so then try to get a backet and parse the data.
	for (unsigned int x = 0; x < Client.size(); ++x)
		if (CheckConnection(x) && (Client[x]->GetData(Packet) >= 0))
			ParseData(Packet, x);
}
コード例 #26
0
void CurrentCostMeterSerial::readCallback(const char *data, size_t len)
{
	boost::lock_guard<boost::mutex> l(readQueueMutex);

	if (!m_bEnableReceive)
		return; //receiving not enabled

	ParseData(data, static_cast<int>(len));
}
コード例 #27
0
void BufferedEmailParser::FlushBuffer()
{
	if (m_isMimeStream) {
		// parse full lines out of buffer
		size_t bytesHandled = ParseData(m_buffer.data(), m_buffer.size(), m_endOfStream);
		m_buffer.erase(0, bytesHandled);

		// update seenCR
		m_seenCR = m_buffer.empty() ? false : (*m_buffer.end() == '\r');
	} else {
		ParseData(m_buffer.data(), m_buffer.size(), m_endOfStream);
		m_buffer.clear();
	}

	if (m_endOfStream && !m_paused) {
		AsyncEmailParser::End();
	}
}
コード例 #28
0
void NDHttpRequest::InData(const char *data, int size)
{
	ndlbuf_write(&m_recvBuf, (char*)data, size, 0) ;
	while (m_parseStat < 3 && ParseData() > 0) {
		if (_getDataSize() ==0) {
			break ;
		}
	}
}
コード例 #29
0
ファイル: P1MeterTCP.cpp プロジェクト: htlinux/domoticza
void P1MeterTCP::Do_Work()
{
	while (!m_stoprequested)
	{
		if (
			(m_socket == INVALID_SOCKET)&&
			(!m_stoprequested)
			)
		{
			sleep_seconds(1);
			time_t atime = mytime(NULL);
			struct tm ltime;
			localtime_r(&atime, &ltime);


			if (ltime.tm_sec % 12 == 0) {
				mytime(&m_LastHeartbeat);
			}

			m_retrycntr++;
			if (m_retrycntr>=RETRY_DELAY)
			{
				m_retrycntr=0;
				if (!ConnectInternal())
				{
					_log.Log(LOG_STATUS,"P1 Smart Meter: retrying in %d seconds...", RETRY_DELAY);
					continue;
				}
			}
		}
		else
		{
			unsigned char data[1028];
			int bread=recv(m_socket,(char*)&data,sizeof(data),0);
			if (m_stoprequested)
				break;
			mytime(&m_LastHeartbeat);
			if ((bread==0)||(bread<0)) {
				_log.Log(LOG_ERROR,"P1 Smart Meter: TCP/IP connection closed!");
				closesocket(m_socket);
				m_socket=INVALID_SOCKET;
				if (!m_stoprequested)
				{
					_log.Log(LOG_STATUS,"P1 Smart Meter: retrying in %d seconds...", RETRY_DELAY);
					m_retrycntr=0;
					continue;
				}
			}
			else
			{
				boost::lock_guard<boost::mutex> l(readQueueMutex);
				ParseData((const unsigned char*)&data,bread);
			}
		}
	}
	_log.Log(LOG_STATUS,"P1 Smart Meter: TCP/IP Worker stopped...");
} 
コード例 #30
0
void Session::RecvProc()
{
	while(_alive == 1)
	{
		try
		{
			_sendStop = false;
			int len = recv(_clientSocket, _recvbuf, BLOCK_SIZE, 0);
			_sendStop = true;

			if(len <= 0)
			{
				printf("\nrecv failed with error: %d\n", WSAGetLastError());
				_alive = 0;
				break;
			}

			int offset = 0;
			if(_recvSize == 0)
			{
				if(len < sizeof(PacketInfo)) continue;

				PacketInfo* response = (PacketInfo*)_recvbuf;
				if(response->starBites != 0x12345678) continue;
				if(response->stopBits != 0x87654321) continue;

				_recvSize = response->size;

				memcpy(_recvData, _recvbuf, sizeof(PacketInfo));
				_recvOffset = sizeof(PacketInfo);
				offset = sizeof(PacketInfo);
			}

			int remain = min(len - offset, _recvSize - _recvOffset);
			if(remain > 0)
			{
				memcpy(_recvData + _recvOffset, _recvbuf + offset, remain);
				_recvOffset += remain;
				offset += remain;
			}

			if(_recvOffset >= _recvSize)
			{
				ParseData();
				_recvOffset = 0;
				_recvSize = 0;
			}
		}
		catch(...)
		{
			printf("\nrecv failed with error: %d\n", WSAGetLastError());
			_alive = 0;
			break;
		}
	}
}