示例#1
0
// list of packet->next from key:[{},{}]
packet_t packet_get_packets(packet_t p, char *key)
{
  int i;
  packet_t parr, pent, plast, pret = NULL;
  if(!p || !key) return NULL;

  parr = packet_get_packet(p, key);
  if(!parr || *parr->json != '[')
  {
    packet_free(parr);
    return NULL;
  }

  // parse each object in the array, link together
	for(i=0;parr->js[i];i+=2)
	{
    pent = packet_new();
    packet_json(pent, parr->json+parr->js[i], parr->js[i+1]);
    if(!pret) pret = pent;
    else plast->next = pent;
    plast = pent;
	}

  packet_free(parr);
  return pret;
}
示例#2
0
void packet_print(Packet* packet)
{
	switch (packet_get_type(packet))
	{
		case PACKET_TYPE_SEND_MESSAGE:
		{
			printf("Send Message: Length=%d, Message=%s\n", 
				packet_get_length(packet), 
				packet_get_string(packet, SEND_MESSAGE_TEXT));
			break;
		}
		case PACKET_TYPE_SEND_NAME:
		{
			printf("Send Name: Length=%d, Name=%s\n", 
				packet_get_length(packet), 
				packet_get_string(packet, SEND_NAME_NAME));
			break;
		}
		case PACKET_TYPE_MOUSE_DOWN:
		{
			printf("Mouse Down: Length=%d, X=%lf, Y=%lf\n", 
				packet_get_length(packet), 
				packet_get_double(packet, MOUSE_DOWN_X), 
				packet_get_double(packet, MOUSE_DOWN_Y));
			break;
		}
		case PACKET_TYPE_MOUSE_MOVE:
		{
			printf("Mouse Move: Length=%d, X=%lf, Y=%lf\n", 
				packet_get_length(packet), 
				packet_get_double(packet, MOUSE_MOVE_X), 
				packet_get_double(packet, MOUSE_MOVE_Y));
			break;
		}
		case PACKET_TYPE_MOUSE_UP:
		{
			printf("Mouse Up: Length=%d, X=%lf, Y=%lf\n", 
				packet_get_length(packet), 
				packet_get_double(packet, MOUSE_UP_X), 
				packet_get_double(packet, MOUSE_UP_Y));
			break;
		}
		case PACKET_TYPE_NEW_STROKE:
		{
			printf("New Stroke: Length=%d, ID=%d, X=%lf, Y=%lf, TYPE=%d, FILL=%d, WIDTH=%lf, R=%lf, G=%lf, B=%lf\n", 
				packet_get_length(packet), 
				packet_get_int(packet, NEW_STROKE_ID),
				packet_get_double(packet, NEW_STROKE_X), 
				packet_get_double(packet, NEW_STROKE_Y),
				packet_get_byte(packet, NEW_STROKE_SHAPE_TYPE),
				packet_get_byte(packet, NEW_STROKE_FILL),
				packet_get_double(packet, NEW_STROKE_WIDTH),
				packet_get_double(packet, NEW_STROKE_R),
				packet_get_double(packet, NEW_STROKE_G),
				packet_get_double(packet, NEW_STROKE_B));
			break;
		}
		case PACKET_TYPE_ADD_POINT:
		{
			printf("Add Point: Length=%d, ID=%d, X=%lf, Y=%lf\n", 
				packet_get_length(packet), 
				packet_get_int(packet, ADD_POINT_ID),
				packet_get_double(packet, ADD_POINT_X), 
				packet_get_double(packet, ADD_POINT_Y));
			break;
		}
		case PACKET_TYPE_DELETE:
		{
			printf("New Stroke: Length=%d, ID=%d\n", 
				packet_get_length(packet), 
				packet_get_int(packet, DELETE_ID));
			break;
		}
		case PACKET_TYPE_UPDATE:
		{
			printf("Update: Length=%d, ID=%d, X=%lf, Y=%lf, T=%lf\n", 
				packet_get_length(packet), 
				packet_get_int(packet, UPDATE_ID),
				packet_get_double(packet, UPDATE_X), 
				packet_get_double(packet, UPDATE_Y),
				packet_get_double(packet, UPDATE_ROTATION));
			break;
		}
		case PACKET_TYPE_PACKETS:
		{
			printf("Packets: Length=%d\n", packet_get_length(packet));
			int i = 0;
			Packet* p = NULL;
			do
			{
				printf("\t");
				p = packet_get_packet(packet, i);
				packet_print(p);
				i++;
			} while (packet_get_type(p) != PACKET_TYPE_UNDEFINED);
			break;
		}
		case PACKET_TYPE_NEW_CONNECTION:
		{
			printf("New Connection: Length=1\n");
			break;
		}
		case PACKET_TYPE_INK_POT:
		{
			printf("Ink: %d\n", packet_get_byte(packet, INK_POT_INK));
			break;
		}
		case PACKET_TYPE_UNDEFINED:
		default:
		{
			printf("Packet Undefined\n");
			break;
		}
	}
}