std::vector<MaterialBuffer> ModelBinaryLoader::readMaterialBuffer(int p_NumberOfMaterialBuffers, std::istream* p_Input)
{
	MaterialBuffer temp;
	std::vector<MaterialBuffer> tempBuffer;
	for(int i = 0; i < p_NumberOfMaterialBuffers; i++)
	{
		byteToString(p_Input, temp.material);
		byteToInt(p_Input, temp.start);
		byteToInt(p_Input, temp.length);
		tempBuffer.push_back(temp);
	}
	return tempBuffer;
}
int aDecode(string hiByte, string loByte){

    // Hex strings converted back to integers should be in the range [0x00..0x7F]
    int lowByteEncoded = byteToInt(loByte);
    int hiByteEncoded = byteToInt(hiByte);

    cout << "lowByteEncoded = " << lowByteEncoded << endl;
    cout << "hiByteEncoded = " << hiByteEncoded << endl;

    if (lowByteEncoded < LOWER_RANGE_HEX || lowByteEncoded > UPPER_RANGE_HEX ||
            hiByteEncoded < LOWER_RANGE_HEX || hiByteEncoded > UPPER_RANGE_HEX){
        throw std::out_of_range("Out of range");
    }

    return -1;
}
void ModelBinaryLoader::byteToString(std::istream* p_Input, std::string& p_Return)
{
	int strLength = 0;
	byteToInt(p_Input, strLength);
	std::vector<char> buffer(strLength);
	p_Input->read( buffer.data(), strLength);
	p_Return = std::string(buffer.data(), strLength);
}
ModelBinaryLoader::Header ModelBinaryLoader::readHeader(std::istream* p_Input)
{
	Header tempHeader;
	tempHeader.m_Animated = true;
	tempHeader.m_Transparent = true;
	tempHeader.m_CollideAble = true;
	int tempBool;
	byteToString(p_Input, tempHeader.m_ModelName);
	byteToInt(p_Input, tempHeader.m_NumMaterial);
	byteToInt(p_Input, tempHeader.m_NumVertex);
	byteToInt(p_Input, tempHeader.m_NumMaterialBuffer);
	byteToInt(p_Input, tempBool);
	if(tempBool == 0)
	{
		tempHeader.m_Animated= false;
	}
	byteToInt(p_Input, tempBool);
	if(tempBool == 0)
	{
		tempHeader.m_Transparent = false;
	}
	byteToInt(p_Input, tempBool);
	if(tempBool == 0)
	{
		tempHeader.m_CollideAble = false;
	}
	return tempHeader;
}
Beispiel #5
0
int 
recvFrom
(Peer *peer, byte *headerBuf, byte *dataBuf)
{	
	 	int headerSize = readHeader(peer, headerBuf, HEADERSIZE);
		
		if(headerSize == 0 )
		{
			printf("Non Header \n");
			return 0;
		}
 
		int length = byteToInt(headerBuf, 8);
		int dataSize   = readData(peer  , dataBuf,   length );

		printf("[ from %s ] type : %d, redesc : %d length : %d data : %s \n",
		 peer->ip, byteToInt(headerBuf,0),
                 byteToInt(headerBuf, 4),
                 byteToInt(headerBuf, 8),
                 dataBuf);

		return (headerSize + dataSize);
}
int main(int argc, char *argv[]) {

	if(argc != 3)
	{
		exitWithError("Usage: tstream2jpeg data_file_path outputPath");
	}
	char* 	tStreamPath = argv[1];  		  // Set the file in path
	char 	jpegPath[255];   				  // Buffer for current working dir
	int 	i = 0, len, ctr = 0;
	char*   workingDir = argv[2];

	//getcwd(workingDir, 255); 				  // Get current working directory
	FILE* tstream = fopen(tStreamPath, "rb"); // Open the telemetry stream
	fseek(tstream, 0, SEEK_END);			  // Seek to EOF
	len = ftell(tstream);					  // Find file size
	fseek(tstream, 0, SEEK_SET);			  // Seek to beginning of file
	byte* buf = (byte*)malloc(len);			  // Allocate file in memory
	fread(buf, 1, len-1, tstream);			  // Read file into memory
	sprintf(jpegPath, "%s/image%d.jpeg", workingDir, i++);
	FILE* jpeg = fopen(jpegPath, "wb");
	while(ctr < len)						  // While not at end of buffer
	{
		ctr++;								  // Ignore first 0xAA
		ctr += 2;							  // Ignore bytes received
		byte conBytes[2];					  // Buffer for bytes contained
		conBytes[1] = *(buf+(ctr++));		  // Fill buffer
		conBytes[0] = *(buf+(ctr++));		  // Fill buffer
		uint16_t con = byteToInt(conBytes);	  // Get int of bytes contained
		printf("Creating image of size %d bytes\n", con);
		if(*(buf+ctr) == 0xFF && *(buf+ctr+1) == 0xD8)
		{
			fclose(jpeg);
			sprintf(jpegPath, "%s/image%d.jpeg", workingDir, i++);
			jpeg = fopen(jpegPath, "wb");
		}									  // Open JPEG for writing
		fwrite(buf+ctr, 1, con, jpeg);		  // Write to the JPEG
		ctr += con;							  // Move ptr past image data
		ctr++;								  // Ignore checksum
	}
	free(buf);
	fclose(tstream);
	return EXIT_SUCCESS;
}
Beispiel #7
0
void client_recv(int event_fd, Peer *peer)
{

	unsigned char headerBuf[HEADERSIZE*5];
	unsigned char dataBuf[DATASIZE*5];
	unsigned char sendBuf[DATASIZE*5];
	char *tokenBuf[DATASIZE];

	int len;

	memset(headerBuf, 0x00, HEADERSIZE*5);
	memset(dataBuf, 0x00, DATASIZE*5);
	memset(tokenBuf, 0x00, DATASIZE);

	Peer t_peer;
	t_peer.socket = event_fd;

	len = recvFrom(&t_peer, headerBuf, dataBuf);
	int type = byteToInt(headerBuf, 0);

	if(len > 0 )
	{
		/* 조회 */

		// who(id), when(time), where(ip), what(packet), how(to Inner Server, to Outer Client), why(type:purpose)
		log_line_init();

		log_user_name (event_fd, peer);
		//log_user_ip   (event_fd, peer);
		//log_user_ptype(type);

		log_line_feed();

		/* Nonce, Timestapm 저장 */
		/*
		   addNonce(con, tokenBuf[index-1]);
		   addNonce(con, tokenBuf[index]);
		 */
		/*
		   int i;0
		   for(i=0; i<index-1; i++)
		   {
		   strcat(sendBuf, tokenBuf[i]);
		   strcat(sendBuf, tokenBuf
		   }
		 */
	}
	if( len < 0 || len == 0 )
	{
		userpool_delete(event_fd, peer);
		close(event_fd);
		return;
	}

	switch(type)
	{
		case ERROR_REPORT :
			{
				// Auth, dir, HDFS Error Reporting Packet Protocol
				Peer client;
				client.socket = byteToInt(headerBuf, 4);

				/* 로그를 기록하는 부분 XML형태로 */
				sendTo(&client, 0, g_epoll_auth ,strlen((char *)dataBuf), dataBuf);
				break;

			}

		case LOGIN_REQUEST :
			{
				if(g_epoll_auth == 0)
				{
					printf("auth server not running \n");
					break;
				}
				Peer auth;
				auth.socket = g_epoll_auth;	
				len = sendTo(&auth, 1, event_fd, strlen((char *) dataBuf), dataBuf);

				break;
			}
		case LOGIN_RESPONSE :
			{
				char id_buf[20];
				Peer client;

				memset(id_buf, 0x00, 20);
				client.socket = byteToInt(headerBuf, 4);

				/* Align User to Admin Table */
				get_id_from_data(dataBuf, id_buf, strlen(dataBuf));
				userpool_add_name(client.socket, peer ,id_buf);
				printf("id : %s\n", id_buf);
				sendTo(&client, 2, g_epoll_auth ,strlen((char *) dataBuf), dataBuf);
				//userpool_add(client.socket, client.ip,

				break;
			}
		case LOGOUT_REQUEST :
			{
				Peer client;
				client.socket = event_fd;

				sendTo(&client, 4, event_fd, strlen((char *) dataBuf), dataBuf);
				userpool_delete(client.socket, peer);
				//close(client.socket);
				printf("delete\n");
				break;
			}

		case LOGOUT_RESPONSE :
			{
				/* This is not Server Responsibility */	
			}

		case SIGNUP_REQUEST :
			{
				Peer auth;
				auth.socket = g_epoll_auth;

				if(g_epoll_auth == 0)
				{
					//Exception
					printf("auth server not running \n");
					break;
				}	

				sendTo(&auth, 5, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}

		case SIGNUP_RESPONSE :
			{
				Peer client;
				client.socket = byteToInt(headerBuf, 4);
				sendTo(&client, 6, g_epoll_dir ,strlen((char *) dataBuf), dataBuf);
				break;

			}

		case DIR_LIST_REQUEST :
			{
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}
				sendTo(&dirServ, 7, event_fd, strlen((char *) dataBuf), dataBuf);
			}

		case DIR_LIST_RESPONSE :
			{
				Peer client;
				client.socket = byteToInt(headerBuf, 4);

				sendTo(&client, 8, event_fd, strlen((char *) dataBuf), dataBuf);	
				break;
			}

		case DIR_CREAT_REQUEST:
			{
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				sendTo(&dirServ, 9, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}

		case DIR_KEY_RESPONSE:
			{
				Peer peer;
				peer.socket = byteToInt(headerBuf, 4);
				sendTo(&peer, 10, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}

		case ACCESS_DIR_REQUEST:
			{
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				sendTo(&dirServ, 11, event_fd, strlen((char *) dataBuf), dataBuf);
				break;

			}

		case ACCESS_DIR_RESPONSE:
			{
				Peer peer;
				peer.socket = byteToInt(headerBuf, 4);
				sendTo(&peer, 12, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}

		case FOLDER_CREAT_REQUEST:
			{
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				sendTo(&dirServ, 13, event_fd, strlen((char *) dataBuf), dataBuf);
				break;	
			}

		case FOLDER_CREAT_RESPONSE:
			{
				Peer peer;
				peer.socket = byteToInt(headerBuf, 4);
				sendTo(&peer, 14, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}

		case META_UPLOAD_REQUEST:
			{
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				/* event fd 클라이언트 소켓 디스크립터 번호 */
				sendTo(&dirServ, 15, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}

		case META_UPLOAD_RESPONSE:
			{
				Peer peer;
				peer.socket = byteToInt(headerBuf, 4);
				sendTo(&peer, 16, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}


		case META_DOWNLOAD_REQUEST:
			{
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				/* event fd 클라이언트 소켓 디스크립터 번호 */
				sendTo(&dirServ, 17, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}

		case META_DOWNLOAD_RESPONSE:
			{
				Peer peer;
				peer.socket = byteToInt(headerBuf, 4);
				sendTo(&peer, 18, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}

		case SHARE_REQUEST:
			{
				/* Client to Dir */
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				/* event fd 클라이언트 소켓 디스크립터 번호 */
				sendTo(&dirServ, 21, event_fd, strlen((char *) dataBuf), dataBuf);

				break;
			}

		case 22:
			{
				/* Dir to Client */
				Peer peer;
				peer.socket = byteToInt(headerBuf, 4);
				sendTo(&peer, 22, event_fd, strlen((char *) dataBuf), dataBuf);
				
				break;

			}
	
		case SHARE_LIST_REQUEST:
			{
				/* Client to Dir */
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				/* event fd 클라이언트 소켓 디스크립터 번호 */
				sendTo(&dirServ, 23, event_fd, strlen((char *) dataBuf), dataBuf);

				break;
			}

		case SHARE_LIST_RESPONSE:
			{
				/* Dir to Client */
				Peer peer;
				peer.socket = byteToInt(headerBuf, 4);
				sendTo(&peer, 24, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}



		case SHARE_APPROVE:
			{
				/* Client to Dir */
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				/* event fd 클라이언트 소켓 디스크립터 번호 */
				sendTo(&dirServ, 25, event_fd, strlen((char *) dataBuf), dataBuf);

				break;
			}

		case SHARE_DENY:
			{

				/* Client to Dir */
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				/* event fd 클라이언트 소켓 디스크립터 번호 */
				sendTo(&dirServ, 26, event_fd, strlen((char *) dataBuf), dataBuf);
				printf("Share refuse Send!!!!!!!!!!!\n");

				break;
			}

		case SHARE_CANCEL:
			{

				/* Client to Dir */
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				/* event fd 클라이언트 소켓 디스크립터 번호 */
				sendTo(&dirServ, 27, event_fd, strlen((char *) dataBuf), dataBuf);

				break;
			}

			/* Transmit 프로토콜 30~49 */
		case DIR_TO_HDFS_FOR_UPLOAD_METADATA:
			{

				Peer hdfs;
				hdfs.socket = g_epoll_HDFS;


				if(g_epoll_HDFS == 0)
				{
					printf("HDFS server not running \n");
					break;
				}

				sendTo(&hdfs, 30, event_fd, strlen((char *) dataBuf), dataBuf);

				break;
			}

			/* 메타데이터 패쓰의 설정을 위해 사용 */
		case HDFS_TO_DIR_FOR_MODIFY_METAPATH:
			{
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				sendTo(&dirServ, 31, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}

		case DIR_TO_HDFS_FOR_DOWNLOAD_METADATA:
			{
				Peer hdfs;
				hdfs.socket = g_epoll_HDFS;


				if(g_epoll_HDFS == 0)
				{
					printf("HDFS server not running \n");
					break;
				}

				sendTo(&hdfs, 32, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}

		case HDFS_TO_DIR_FOR_SEND_METADATA:
			{
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				sendTo(&dirServ, 33, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}


			/* passingServ 프로토콜 50~100 */
		case PROGRAM_EXIT_REQUEST:
			{
				Peer client;
				client.socket = event_fd;

				sendTo(&client, PROGRAM_EXIT_RESPONSE, event_fd, strlen((char *) dataBuf), dataBuf);

				userpool_delete(event_fd, peer);
				close(client.socket);

				break;
			}

		case IDCHECK_REQUEST:
			{
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				/* event fd 클라이언트 소켓 디스크립터 번호 */
				sendTo(&dirServ, 19, event_fd, strlen((char *) dataBuf), dataBuf);
				break;

			}

		case IDCHECK_RESPONSE:
			{
				Peer peer;
				peer.socket = byteToInt(headerBuf, 4);
				sendTo(&peer, 20, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
	
			}

		/***********************************/
		/* 파일 및 폴더 삭제 관련 프로토콜 */
		/***********************************/
		
		case DEL_DIR_REQUEST:
			{
				/* Client to Dir */
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				/* event fd 클라이언트 소켓 디스크립터 번호 */
				sendTo(&dirServ, 28, event_fd, strlen((char *) dataBuf), dataBuf);

				break;
			}

		case DEL_FILE_REQUEST:
			{
				/* Client to Dir */
				Peer dirServ;
				dirServ.socket = g_epoll_dir;

				if(g_epoll_dir == 0)
				{
					printf("dir server not running \n");
					break;
				}

				/* event fd 클라이언트 소켓 디스크립터 번호 */
				sendTo(&dirServ, 29, event_fd, strlen((char *) dataBuf), dataBuf);

				break;
			}

		/***********************************/
		/* 인증 서버 접속관련 프로토콜     */
		/***********************************/
	


		case AUTH_BINDING :
			{
				if(g_epoll_auth == 0)
					printf("Auth Serv Binding \n");
				else{
					printf("Auth Serv already Binding \n");
					break;
				}

				g_epoll_auth = event_fd;
				Peer auth;
				auth.socket = g_epoll_auth;

				sendTo(&auth, 104, event_fd , strlen((char *) dataBuf), dataBuf);

				printf("Auth Serv Binding End \n");
				break;
			}

		case DIR_BINDING :
			{

				if(g_epoll_dir == 0)
					printf("Dir Serv Binding \n");
				else
				{
					printf("Dir Serv already Binding \n");
					break;
				}

				g_epoll_dir = event_fd;
				Peer dir;
				dir.socket = g_epoll_dir;


				sendTo(&dir, 105, event_fd, strlen((char *)dataBuf), dataBuf);

				printf("Dir Serv Binding End \n");
				break;
			}

		case HDFS_BINDING :
			{

				g_epoll_HDFS = event_fd;
				Peer HDFS;
				HDFS.socket = g_epoll_HDFS;


				sendTo(&HDFS, 106, event_fd, strlen((char *) dataBuf), dataBuf);
				break;
			}

			/* HandShake Protocol */


			/* */


		default :
			{
				printf("type is : %d ", type);
				printf("default : %s\n", dataBuf);
				break;
			}
	}

}
Beispiel #8
0
void client_recv(int event_fd, Peer *peer)
{

  unsigned char headerBuf[HEADERSIZE]; 
  unsigned char dataBuf[DATASIZE];
  int len;

  memset(headerBuf, 0x00, HEADERSIZE);
  memset(dataBuf,   0x00, DATASIZE);

  Peer t_peer;
  t_peer.socket = event_fd;

  printf("recv start \n");
  len =  recvFrom(&t_peer, headerBuf, dataBuf);  
  

  int type = byteToInt(headerBuf, 0);

  printf("read end type : %d\n", type);

  if( len < 0 || len == 0 )
  {
      userpool_delete(event_fd, peer);
      close(event_fd);
      return;
  }
  
  printf("start type classify\n");
  switch(type)
  {
	case 0 : 
	{

		//userpool_send(headerBuf, peer);
		//userpool_send(dataBuf, peer);

		break;
	}

        case 1 :
	{
		Peer auth;
		auth.socket = g_epoll_auth;
		
		if(g_epoll_auth == 0)
		{
			//Exception
			printf("auth server not running \n");
			break;
		}	

		printf("login request to : %d, %d, %s \n", auth.socket, strlen(dataBuf), dataBuf);
		sendTo(&auth, 1, event_fd, strlen(dataBuf), dataBuf);

		break;
	}

	case 101 :
	{
		printf("Auth Serv Binding \n");
		
		g_epoll_auth = event_fd;

		printf("Auth Serv fd is : %d \n", event_fd);

		sendTo(g_epoll_auth, 102, event_fd , strlen(dataBuf), dataBuf);

		printf("Auth Serv Binding End \n");
 		break;
	}
	case 102 : 
	{
		printf("Dir Serv Binding \n");
	}
 
	default :
	{
		printf("default\n");
	}
  }

}
Beispiel #9
0
int bmpGetRawSize( unsigned char *imgHeader )
{
	return byteToInt( imgHeader , BMP_H_RAW_SIZE , 4 ); 
}
Beispiel #10
0
int bmpGetHeight( unsigned char *imgHeader )
{
	return byteToInt( imgHeader , BMP_H_HEIGHT , 4 ); 
}
Beispiel #11
0
int bmpGetWidth( unsigned char *imgHeader )
{
	return byteToInt( imgHeader , BMP_H_WIDTH , 4 ); 
}
Beispiel #12
0
int bmpGetOffset( unsigned char *imgHeader )
{
	return byteToInt( imgHeader , BMP_H_OFFSET , 4 ); 
}
Beispiel #13
0
int bmpGetFileSize( unsigned char *imgHeader )
{
	return byteToInt( imgHeader , BMP_H_FILE_SIZE , 4 ); 
}
Beispiel #14
0
uint CMessage::GetSerial() const
{
	return BigLittleSwap16(byteToInt(m_Serial,2));
}