예제 #1
0
//============================================================================
//		TTestClient::Execute : Execute the test.
//----------------------------------------------------------------------------
void TTestClient::Execute(void)
{	NString				theValue;
	NNetworkMessage		theMsg;



	// Send a message to everyone
	theMsg = CreateMessage(kTestClientBroadcastMsg, kNEntityEveryone);
	theMsg.SetValue(kTestTokenKey, kTokenClientBroadcast);

	mState += kStateClientSentMessage;
	SendMessage(theMsg);



	// Send a message to the server
	theMsg = CreateMessage(kTestClientServerMsg, kNEntityServer);
	theMsg.SetValue(kTestTokenKey, kTokenClientServer);

	mState += kStateClientSentMessage;
	SendMessage(theMsg);



	// Wait for a response
	while (!mIsDone)
		NThread::Sleep();
}
예제 #2
0
/**
 * @ingroup SipUserAgent
 * @brief REFER 메시지를 생성한다.
 * @returns 성공하면 REFER 메시지를 리턴하고 그렇지 않으면 NULL 을 리턴한다.
 */
CSipMessage * CSipDialog::CreateRefer( )
{
	CSipMessage * pclsMessage = CreateMessage( SIP_METHOD_REFER );
	if( pclsMessage == NULL ) return NULL;

	return pclsMessage;
}
예제 #3
0
/**
 * @ingroup SipUserAgent
 * @brief INFO 메시지를 생성한다.
 * @returns 성공하면 PRACK 메시지를 리턴하고 그렇지 않으면 NULL 을 리턴한다.
 */
CSipMessage * CSipDialog::CreateInfo( )
{
	CSipMessage * pclsMessage = CreateMessage( SIP_METHOD_INFO );
	if( pclsMessage == NULL ) return NULL;

	return pclsMessage;
}
예제 #4
0
/**
 * @ingroup SipUserAgent
 * @brief BYE 메시지를 생성한다.
 * @returns 성공하면 BYE 메시지를 리턴하고 그렇지 않으면 NULL 을 리턴한다.
 */
CSipMessage * CSipDialog::CreateBye( )
{
	CSipMessage * pclsMessage = CreateMessage( SIP_METHOD_BYE );
	if( pclsMessage == NULL ) return NULL;

	return pclsMessage;
}
	/** @return Widget for this log listing item*/
	virtual TSharedRef<SWidget> GenerateWidget()
	{
		// See if we have any valid tokens which match the column name
		const TArray< TSharedRef<IMessageToken> >& MessageTokens = Message->GetMessageTokens();

		// Collect entire message for tooltip
		FText FullMessage = Message->ToText();

		// Create the horizontal box and add the icon
		TSharedPtr<SHorizontalBox> HorzBox;
		TSharedRef<SWidget> CellContent =
			SNew(SBorder)
			.OnMouseButtonUp(this, &SMessageLogListingItem::Message_OnMouseButtonUp)
			.BorderImage(FEditorStyle::GetBrush("NoBorder"))
			.Padding( FMargin(2.f, 2.f, 2.f, 1.f) )
			[
				SAssignNew(HorzBox, SHorizontalBox)
				.ToolTipText(FullMessage)
			];
		check(HorzBox.IsValid());

		// Iterate over parts of the message and create widgets for them
		for (auto TokenIt = MessageTokens.CreateConstIterator(); TokenIt; ++TokenIt)
		{
			const TSharedRef<IMessageToken>& Token = *TokenIt;
			CreateMessage( HorzBox, Token );
		}

		return CellContent;
	}
예제 #6
0
/* Send interrupt notification to the phone or 
 * read data from the accelerometer and send it to the phone
 */
static void AccelerometerSendDataHandler(void)
{
  tMessage Msg = {3, AccelIndMsg, MSG_OPT_NONE, NULL};

  if (CreateMessage(&Msg))
  {
    if (Control & DRDYE_DATA_AVAILABLE || (Control & WUF_ENABLE))
    {
      AccelerometerRead(Control & DRDYE_DATA_AVAILABLE ? KIONIX_XOUT_L : KIONIX_XOUT_HPF_L,
        Data, XYZ_DATA_LENGTH);

      Msg.pBuffer[0] = Data[1];
      Msg.pBuffer[1] = Data[3];
      Msg.pBuffer[2] = Data[5];
      RouteMsg(&Msg);

//      PrintQ(Msg.pBuffer, 3);
    }
    else if (Control & TILT_ENABLE_TPE)
    {
      AccelerometerRead(KIONIX_TILT_POS_CUR, Msg.pBuffer, ONE_BYTE);
      Msg.Length = 1;
      RouteMsg(&Msg);
      PrintH(Msg.pBuffer[0]); PrintR();
    }

    AccelerometerRead(KIONIX_INT_REL, Data, ONE_BYTE); //clear int
  }
}
예제 #7
0
/**
 * @ingroup SipUserAgent
 * @brief NOTIFY 메시지를 생성한다.
 * @returns 성공하면 NOTIFY 메시지를 리턴하고 그렇지 않으면 NULL 을 리턴한다.
 */
CSipMessage * CSipDialog::CreateNotify( )
{
	CSipMessage * pclsMessage = CreateMessage( SIP_METHOD_NOTIFY );
	if( pclsMessage == NULL ) return NULL;

	return pclsMessage;
}
예제 #8
0
PackedMessage_t MemProtocol::CreateLeaseMessage(int leaseSize,int leaseDuration)
{
    char * payload = new char[sizeof(int)+sizeof(int)];
    
    memcpy(payload, &leaseSize, sizeof(int));
    memcpy(payload+sizeof(int), &leaseDuration, sizeof(int));
    return CreateMessage(Lease, payload, sizeof(int) + sizeof(int));
}
예제 #9
0
/**
Create a clone of a message based on protocol and id
*/
Message* LocalTransport::Clone(Message* msg)
{
    uint32_t proto = msg->GetProtcolCRC();
    uint32_t code = msg->GetCode();
    Message* cloned = CreateMessage(proto, code);

    cloned->Copy(msg);
    return cloned;
}
예제 #10
0
/**
 * @ingroup SipUserAgent
 * @brief CANCEL 메시지를 생성한다.
 * @returns 성공하면 CANCEL 메시지를 리턴하고 그렇지 않으면 NULL 을 리턴한다.
 */
CSipMessage * CSipDialog::CreateCancel( )
{
	CSipMessage * pclsMessage = CreateMessage( SIP_METHOD_CANCEL );
	if( pclsMessage == NULL ) return NULL;

	pclsMessage->AddVia( m_pclsSipStack->m_clsSetup.m_strLocalIp.c_str(), m_pclsSipStack->m_clsSetup.GetLocalPort( m_eTransport ), m_strViaBranch.c_str(), m_eTransport );

	return pclsMessage;
}
예제 #11
0
void InitGraphics(int argc, char *argv[])
{
    Dimension width, height;
    XEvent event;
    static String fallback_resources[] = {
        "*xcheck*background: #e0e0e0",
        "*xcheck*fontList: -*-helvetica-bold-r-normal--14-*-*-*-*-*-*-*",
        "*xcheck*font: -*-helvetica-bold-r-normal--14-*-*-*-*-*-*-*",
        "*xcheck*XmText.background:  #b0e0c0",
        NULL,
    };

    XtSetLanguageProc(NULL,NULL,NULL);
    toplevel = XtVaAppInitialize(
        &app,"App-Class",
        NULL,0,
        &argc,argv,
        fallback_resources,
        NULL);
    mainWidget = XtVaCreateManagedWidget("mw", xmMainWindowWidgetClass, toplevel, NULL);
    dpy = XtDisplay(mainWidget);
    gc = XCreateGC(dpy,DefaultRootWindow(dpy),(int)NULL,NULL);
    XSetLineAttributes(dpy,gc,2,LineSolid,CapButt,JoinMiter);
    colormap = CreateColorMap(mainWidget);
    menubar = CreateMenuBar(mainWidget);
    workwin = CreateWorkWin(mainWidget);
    message = CreateMessage(mainWidget);
    XtVaSetValues(mainWidget,
        XmNcolormap,colormap,
        XmNmenuBar,menubar,
        XmNworkWindow,workwin,
        XmNmessageWindow,message,
        NULL);
    XtRealizeWidget(toplevel);
    do {
        XtAppNextEvent(app,&event);
        XtDispatchEvent(&event);
    }
    while(event.type != Expose);

    XtVaGetValues(toplevel,XmNheight,&height,XmNwidth,&width,NULL);
    XtVaSetValues(toplevel,
        XmNwidth, width,
        XmNheight, height,
        XmNmaxWidth, width,
        XmNmaxHeight, height,
        XmNminWidth, width,
        XmNminHeight, height,
        XmNallowShellResize, False,
        NULL);
    HandleEvents();

    strcpy(xval[0],"human");
    strcpy(xval[1],"computer");
    strcpy(xval[2],"10.0");
}
예제 #12
0
void BufferIOEvent::Send(const Message& msg) {
  MessagePtr msg_ptr = CreateMessage(msg);
#ifdef _BINARY_MSG_EXTEND_PACKAGING
  if (msg_type_ == MessageType::BINARY) {
    BinaryMessage* bmsg = static_cast<BinaryMessage*>(msg_ptr.get());
    bmsg->Header()->msg_id = ++msg_seq_;
  }
#endif
  SendInner(msg_ptr);
}
예제 #13
0
//-----------------------------------------------------------------------------
// Purpose: Creates a reply to the message
// Input  : *msgName - 
//			*msgToReplyTo - 
// Output : ISendMessage
//-----------------------------------------------------------------------------
ISendMessage *CTrackerNET::CreateReply(int msgID, IReceiveMessage *msgToReplyTo)
{
	ISendMessage *reply = CreateMessage(msgID);
	
	// setup reply
	reply->SetNetAddress(msgToReplyTo->NetAddress());
	reply->SetSessionID(msgToReplyTo->SessionID());
	reply->SetEncrypted(msgToReplyTo->WasEncrypted());

	return reply;
}
예제 #14
0
/**
 * @ingroup SipUserAgent
 * @brief ACK 메시지를 생성한다.
 * @param iStatusCode SIP INVITE 응답 코드
 * @returns 성공하면 ACK 메시지를 리턴하고 그렇지 않으면 NULL 을 리턴한다.
 */
CSipMessage * CSipDialog::CreateAck( int iStatusCode )
{
	CSipMessage * pclsMessage = CreateMessage( SIP_METHOD_ACK );
	if( pclsMessage == NULL ) return NULL;

	if( iStatusCode / 100 != 2 )
	{
		pclsMessage->AddVia( m_pclsSipStack->m_clsSetup.m_strLocalIp.c_str(), m_pclsSipStack->m_clsSetup.GetLocalPort( m_eTransport ), m_strViaBranch.c_str(), m_eTransport );
	}

	return pclsMessage;
}
예제 #15
0
void BufferIOEvent::Send(const char *data, uint32_t len, bool bmsg_has_hdr) {
  MessagePtr msg_ptr = CreateMessage(msg_type_, data, len, bmsg_has_hdr);
  if (msg_type_ == MessageType::BINARY) {
    BinaryMessage* bmsg = static_cast<BinaryMessage*>(msg_ptr.get());
#ifdef _BINARY_MSG_EXTEND_PACKAGING
    bmsg->Header()->msg_id = ++msg_seq_;
#endif
    printf("[BufferIOEvent::Send] HDR: %s\n", bmsg->Header()->ToString().c_str());
  }
  printf("[BufferIOEvent::Send] message size: %ld\n", msg_ptr->Size());
  SendInner(msg_ptr);
}
예제 #16
0
void MessageMQ::AppendData(const char* data, uint32_t size) {
  size_t feeds = 0;
  while (feeds < size) {
    if (Last()->Completion()) {
      mq_.push(CreateMessage(msg_type_));
    }
    feeds += Last()->AppendData(&data[feeds], size - feeds);
    if (Last()->Completion()) {
      printf("[MessageMQ] Recieved a complation message, type: %d, size: %lu\n", Last()->Type(), Last()->Size());
    }
  }
}
예제 #17
0
		static MessagePtr Parse(const char* buf, int len, ErrorCode* error)
		{
			MessagePtr message;

			typedef google::protobuf::int32 int32;

			// check sum
			int32 expectedCheckSum = async::detail::AsInt32(buf + len - kHeaderLen);
			int32 checkSum = static_cast<int32>(0
				/*::adler32(1,
				reinterpret_cast<const Bytef*>(buf),
				static_cast<int>(len - kHeaderLen))*/);
			if (checkSum == expectedCheckSum)
			{
				// get message type name
				int32 nameLen = async::detail::AsInt32(buf);
				if (nameLen >= 2 && nameLen <= len - 2 * kHeaderLen)
				{
					std::string typeName(buf + kHeaderLen, buf + kHeaderLen + nameLen - 1);
					// create message object
					message.reset(CreateMessage(typeName));
					if (message)
					{
						// parse from buffer
						const char* data = buf + kHeaderLen + nameLen;
						int32 dataLen = len - nameLen - 2 * kHeaderLen;
						if (message->ParseFromArray(data, dataLen))
						{
							*error = kNoError;
						}
						else
						{
							*error = kParseError;
						}
					}
					else
					{
						*error = kUnknownMessageType;
					}
				}
				else
				{
					*error = kInvalidNameLen;
				}
			}
			else
			{
				*error = kCheckSumError;
			}

			return message;
		}
예제 #18
0
void ChangeMode(unsigned char Option)
{
//  PrintF("- ChgModInd:0x%02x", Option);
//  PrintF(" PgTp %d Pg: %d", PageType, CurrentPage[PageType]);

  unsigned char Mode = Option & MODE_MASK;

  tMessage Msg = {1, ModeChangeIndMsg, (CurrentIdleScreen() << 4) | Mode, NULL};
  if (CreateMessage(&Msg))
  {
    Msg.pBuffer[0] = (Option >> 4) ? Option >> 4 : eScUpdateComplete;
    RouteMsg(&Msg);
  }
예제 #19
0
BOOL SipMessageCallback(char *string, char *ip, int port)
{
    MESSAGE *message = CreateMessage();

    SetMessageAddr(message, ip);
    SetMessagePort(message, port);
    
    if (ParseMessage(string, message) < 0) {
        return FALSE;
    }

    return SipMessageInput(message);
}
예제 #20
0
TEST(TryingMessageBuildTestGroup, TryingMessageCallIdTest)
{
    MESSAGE *invite = CreateMessage();
    ParseMessage(INCOMMING_INVITE_MESSAGE, invite);
    MESSAGE *trying = BuildResponse(invite, STATUS_CODE_TRYING);

    struct CallIdHeader *inviteCallId = (struct CallIdHeader *)MessageGetHeader(HEADER_NAME_CALLID, invite);
    struct CallIdHeader *tryingCallId = (struct CallIdHeader *)MessageGetHeader(HEADER_NAME_CALLID, trying);
    
    CHECK_TRUE(CallIdHeaderMatched(inviteCallId, tryingCallId));
    
    DestroyMessage(&trying);
    DestroyMessage(&invite);    
}
예제 #21
0
TEST(TryingMessageBuildTestGroup, TryingMessageCSeqTest)
{
    MESSAGE *invite = CreateMessage();
    ParseMessage(INCOMMING_INVITE_MESSAGE, invite);
    MESSAGE *trying = BuildResponse(invite, STATUS_CODE_TRYING);
    
    struct CSeqHeader *inviteCSeq = (struct CSeqHeader *)MessageGetHeader(HEADER_NAME_CSEQ, invite);
    struct CSeqHeader *tryingCSeq = (struct CSeqHeader *)MessageGetHeader(HEADER_NAME_CSEQ, trying);

    CHECK_TRUE(CSeqHeadersMatched(inviteCSeq, tryingCSeq));

    DestroyMessage(&trying);
    DestroyMessage(&invite);
}
예제 #22
0
TEST(TryingMessageBuildTestGroup, TryingMessageViaTest)
{
    MESSAGE *invite = CreateMessage();
    ParseMessage(INCOMMING_INVITE_MESSAGE, invite);
    MESSAGE *trying = BuildResponse(invite, STATUS_CODE_TRYING);

    VIA_HEADER *inviteVia = (VIA_HEADER *)MessageGetHeader(HEADER_NAME_VIA, invite);
    VIA_HEADER *tryingVia = (VIA_HEADER *)MessageGetHeader(HEADER_NAME_VIA, trying);
    
    CHECK_TRUE(ViaHeaderMatched(inviteVia, tryingVia));

    DestroyMessage(&trying);
    DestroyMessage(&invite);    
}
예제 #23
0
TEST(TryingMessageBuildTestGroup, TryingMessageFromHeaderTest)
{
    MESSAGE *invite = CreateMessage();
    ParseMessage(INCOMMING_INVITE_MESSAGE, invite);

    MESSAGE *trying = BuildResponse(invite, STATUS_CODE_TRYING);
    CONTACT_HEADER *inviteFrom = (CONTACT_HEADER *)MessageGetHeader(HEADER_NAME_FROM, invite);
    CONTACT_HEADER *tryingFrom = (CONTACT_HEADER *)MessageGetHeader(HEADER_NAME_FROM, trying);

    CHECK_TRUE(ContactHeaderMatched(inviteFrom, tryingFrom));

    DestroyMessage(&trying);
    DestroyMessage(&invite);
}
예제 #24
0
MESSAGE *BuildRequest(struct Dialog *dialog, SIP_METHOD method)
{
    MESSAGE *message = CreateMessage();
    struct HeaderBuilderMap *p = RequestHeaderBuilderMap;

    SetMessageDestIpaddr(message, dialog);
    SetMessageType(message, MESSAGE_TYPE_REQUEST);
    SetMessageRequestLine(message, BuildRequestLine(dialog, method));

    for ( ; p->headerName != NULL; p++ ) {
        MessageAddHeader(message, p->buildRequestHeader(message, dialog));
    }

    return message;
}
예제 #25
0
/**
 * @ingroup SipUserAgent
 * @brief PRACK 메시지를 생성한다.
 * @returns 성공하면 PRACK 메시지를 리턴하고 그렇지 않으면 NULL 을 리턴한다.
 */
CSipMessage * CSipDialog::CreatePrack( )
{
	if( m_iRSeq == -1 ) return NULL;

	CSipMessage * pclsMessage = CreateMessage( SIP_METHOD_PRACK );
	if( pclsMessage == NULL ) return NULL;

	char	szRAck[101];

	snprintf( szRAck, sizeof(szRAck), "%d %d INVITE", m_iRSeq, m_iSeq );

	pclsMessage->AddHeader( "RAck", szRAck );

	return pclsMessage;
}
예제 #26
0
TEST(TryingMessageBuildTestGroup, TryingMessageToWithTagTest)
{
    MESSAGE *invite = CreateMessage();
    ParseMessage(INCOMMING_INVITE_MESSAGE_WITH_TO_TAG, invite);
    
    MESSAGE *trying = BuildResponse(invite, STATUS_CODE_TRYING);

    CONTACT_HEADER *inviteTo = (CONTACT_HEADER *)MessageGetHeader(HEADER_NAME_TO, invite);
    CONTACT_HEADER *tryingTo = (CONTACT_HEADER *)MessageGetHeader(HEADER_NAME_TO, trying);

    CHECK_TRUE(ContactHeaderMatched(inviteTo, tryingTo));

    DestroyMessage(&trying);
    DestroyMessage(&invite);    
}
예제 #27
0
PackedMessage_t MemProtocol::CreateDataMessage(const char *buffer, long bufferSize, int leaseId, MessageType type)
{
    long size = sizeof(int) + sizeof(long) + bufferSize;
    char * payload = new char[size];
    int offset = 0 ;
    
    memcpy(payload,&leaseId,sizeof(int));
    offset+= sizeof(int);
    
    memcpy(payload +offset,&bufferSize,sizeof(long));
    offset += sizeof(long);
    
    memcpy(payload +offset,buffer,bufferSize);
    
    return CreateMessage(type, payload, size);
}
예제 #28
0
TEST(TryingMessageBuildTestGroup, TryingMessageStatusLineTest)
{
    MESSAGE *invite = CreateMessage();
    ParseMessage(INCOMMING_INVITE_MESSAGE, invite);

    MESSAGE *trying = BuildResponse(invite, STATUS_CODE_TRYING);
    struct StatusLine *status = MessageGetStatusLine(trying);
    
    CHECK_TRUE(status != NULL);
    STRCMP_EQUAL(SIP_VERSION, StatusLineGetSipVersion(status));
    CHECK_EQUAL(100, StatusLineGetStatusCode(status));
    STRCMP_EQUAL("Trying", StatusLineGetReasonPhrase(status));

    DestroyMessage(&trying);
    DestroyMessage(&invite);
}
예제 #29
0
int KiekkoNetwork::SendMsg(SendPackage pckg)
{
	char* buf = CreateMessage(pckg);

	if (send(ConnectSocket, buf, sendLength, 0) == SOCKET_ERROR)
	{
		printf("sendto(...) failed! Error code : %d\n", WSAGetLastError());
		return 1;
	}
	if (paskafix)
	{
		recvThreadMutex.unlock();
		paskafix = false;
	}
	return 0;
}
예제 #30
0
MESSAGE *BuildAckMessageWithinClientTransaction(MESSAGE *invite)
{
    assert(invite != NULL);

    MESSAGE *ack = CreateMessage();
    struct RequestLine *rl = RequestLineDup(MessageGetRequestLine(invite));
    
    SetMessageType(ack, MESSAGE_TYPE_REQUEST);
    RequestLineSetMethod(rl, SIP_METHOD_NAME_ACK);
    SetMessageRequestLine(ack, rl);
    AddResponseHeaders(ack, invite);
    
    struct CSeqHeader *cseq = (struct CSeqHeader *)MessageGetHeader(HEADER_NAME_CSEQ, ack);
    CSeqHeaderSetMethod(cseq, SIP_METHOD_NAME_ACK);

    return ack;
}