open socket for incomming, and provide callback to get incomming data

to comms.  Doesn't work yet, likely because of firewall issues, so
simple UDP may not be the answer.
This commit is contained in:
ehouse 2005-03-03 15:24:53 +00:00
parent 92adb68b3f
commit 9d87b3f3d1

View file

@ -96,6 +96,7 @@ CXWordsAppView::~CXWordsAppView()
delete iGamesMgr; delete iGamesMgr;
#ifndef XWFEATURE_STANDALONE_ONLY #ifndef XWFEATURE_STANDALONE_ONLY
delete iSendSock; delete iSendSock;
delete iReadSock;
#endif #endif
} }
@ -116,6 +117,9 @@ void CXWordsAppView::ConstructL(const TRect& aRect)
#ifndef XWFEATURE_STANDALONE_ONLY #ifndef XWFEATURE_STANDALONE_ONLY
iSendSock = CSendSocket::NewL(); iSendSock = CSendSocket::NewL();
XP_LOGF( "iSendSock created" ); XP_LOGF( "iSendSock created" );
iReadSock = CReadSocket::NewL( PacketReceived, (void*)this );
iReadSock->SetListenPort( iListenPort );
iReadSock->Start();
#endif #endif
// Set the control's border // Set the control's border
@ -483,9 +487,10 @@ sym_util_warnIllegalWord( XW_UtilCtxt* /*uc*/, BadWordInfo* /*bwi*/,
#ifdef BEYOND_IR #ifdef BEYOND_IR
/*static*/void /*static*/void
CXWordsAppView::sym_util_listenPortChange( XW_UtilCtxt* uc, XP_U16 listenPort ) CXWordsAppView::sym_util_listenPortChange( XW_UtilCtxt* uc, XP_U16 aPort )
{ {
CXWordsAppView* self = (CXWordsAppView*)uc->closure;
self->iReadSock->SetListenPort( aPort );
} }
#endif #endif
@ -1204,6 +1209,30 @@ CXWordsAppView::DrawGameName() const
} }
#ifndef XWFEATURE_STANDALONE_ONLY #ifndef XWFEATURE_STANDALONE_ONLY
/*static*/ void
CXWordsAppView::PacketReceived( const TDesC8* aBuf, void* aClosure )
{
CXWordsAppView* me = (CXWordsAppView*)aClosure;
XP_Bool draw = XP_FALSE;
XWStreamCtxt* stream = me->MakeSimpleStream( NULL );
stream_putBytes( stream, (void*)aBuf->Ptr(), aBuf->Length() );
CommsAddrRec addr;
addr.conType = COMMS_CONN_IP;
if ( comms_checkIncommingStream( me->iGame.comms, stream, &addr ) ) {
draw = server_receiveMessage( me->iGame.server, stream );
}
stream_destroy( stream );
sym_util_requestTime( &me->iUtil );
if ( draw ) {
me->DoImmediateDraw();
}
} /* CXWordsAppView::PacketReceived */
/*static*/ XP_S16 /*static*/ XP_S16
CXWordsAppView::sym_send( XP_U8* aBuf, XP_U16 aLen, CommsAddrRec* aAddr, CXWordsAppView::sym_send( XP_U8* aBuf, XP_U16 aLen, CommsAddrRec* aAddr,
void* aClosure ) void* aClosure )