ANSC_STATUS
HttpTroSendToClient
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hMessage,
        ULONG                       ulSendFlags
    )
{
    ANSC_STATUS                     returnStatus   = ANSC_STATUS_SUCCESS;
    PHTTP_TRANS_RECORD_OBJECT       pMyObject      = (PHTTP_TRANS_RECORD_OBJECT     )hThisObject;
    PHTTP_ADVANCED_PROXY_OBJECT     pAdvancedProxy = (PHTTP_ADVANCED_PROXY_OBJECT   )pMyObject->hOwnerContext;
    PANSC_DAEMON_SOCKET_TCP_OBJECT  pClientSocket  = (PANSC_DAEMON_SOCKET_TCP_OBJECT)pMyObject->hClientSocket;
    PANSC_BROKER_SOCKET_TCP_OBJECT  pServerSocket  = (PANSC_BROKER_SOCKET_TCP_OBJECT)pMyObject->hServerSocket;
    PHTTP_BMO_REP_OBJECT            pBmoRep        = (PHTTP_BMO_REP_OBJECT          )hMessage;
    ANSC_HANDLE                     hOrgTmhIf      = pBmoRep->GetTmhIf((ANSC_HANDLE)pBmoRep);

    if ( !pClientSocket )
    {
        return  ANSC_STATUS_INTERNAL_ERROR;
    }

    pBmoRep->SetTmhIf((ANSC_HANDLE)pBmoRep, pMyObject->hTmhClientIf);

    if ( ulSendFlags & HTTP_TRO_SFLAG_HEADERS )
    {
        returnStatus =
            pBmoRep->OutputHeaders
                (
                    (ANSC_HANDLE)pBmoRep,
                    (ANSC_HANDLE)pClientSocket
                );
    }

    if ( ulSendFlags & HTTP_TRO_SFLAG_BODY )
    {
        returnStatus =
            pBmoRep->OutputBody
                (
                    (ANSC_HANDLE)pBmoRep,
                    (ANSC_HANDLE)pClientSocket
                );
    }

    pBmoRep->SetTmhIf((ANSC_HANDLE)pBmoRep, hOrgTmhIf);

    return  ANSC_STATUS_SUCCESS;
}
ANSC_STATUS
HttpWstoSend
    (
        ANSC_HANDLE                 hThisObject,
        ANSC_HANDLE                 hMessage,
        ULONG                       ulSendFlags
    )
{
    ANSC_STATUS                     returnStatus  = ANSC_STATUS_SUCCESS;
    PHTTP_WEBS_TRANS_OBJECT         pMyObject     = (PHTTP_WEBS_TRANS_OBJECT       )hThisObject;
    PHTTP_SIMPLE_SERVER_OBJECT      pSimpleServer = (PHTTP_SIMPLE_SERVER_OBJECT    )pMyObject->hOwnerContext;
    PANSC_DAEMON_SOCKET_TCP_OBJECT  pWebSocket    = (PANSC_DAEMON_SOCKET_TCP_OBJECT)pMyObject->hWebSocket;
    PHTTP_BMO_REP_OBJECT            pBmoRep       = (PHTTP_BMO_REP_OBJECT          )hMessage;
    ANSC_HANDLE                     hOrgTmhIf     = pBmoRep->GetTmhIf((ANSC_HANDLE)pBmoRep);

    pBmoRep->SetTmhIf((ANSC_HANDLE)pBmoRep, pMyObject->hTmhIf);

    if ( ulSendFlags & HTTP_WSTO_SFLAG_HEADERS )
    {
        returnStatus =
            pBmoRep->OutputHeaders
                (
                    (ANSC_HANDLE)pBmoRep,
                    (ANSC_HANDLE)pWebSocket
                );
    }

    if ( ulSendFlags & HTTP_WSTO_SFLAG_BODY )
    {
        returnStatus =
            pBmoRep->OutputBody
                (
                    (ANSC_HANDLE)pBmoRep,
                    (ANSC_HANDLE)pWebSocket
                );
    }

    pBmoRep->SetTmhIf((ANSC_HANDLE)pBmoRep, hOrgTmhIf);

    if ( pWebSocket->bBroken )
    {
        pMyObject->TransState = HTTP_WSTO_STATE_FINISHED;
    }

    return  ANSC_STATUS_SUCCESS;
}