Beispiel #1
0
void mech_c3i_message(dbref player, MECH * mech, char *buffer)
{
    cch(MECH_USUALO);

    DOCHECK(!HasC3i(mech), "This unit is not equipped with C3i!");
    DOCHECK(C3iDestroyed(mech), "Your C3i system is destroyed!");
    DOCHECK(AnyECMDisturbed(mech),
	"Your C3i system is not currently operational!");

    validateC3iNetwork(mech);

    DOCHECK(MechC3iNetworkSize(mech) <= 0,
	"There are no other units in your C3i network!");

    skipws(buffer);
    DOCHECK(!*buffer, "What do you want to send on the C3i Network?");

    sendNetworkMessage(player, mech, buffer, 0);
}
/*----------------------------------------------------------------------------------------------
-- FUNCTION:        awaitFurtherInstructions
--
-- DATE:            February 27, 2015
--
-- REVISIONS:       (Date and Description)
--
-- DESIGNER:        Calvin Rempel
--
-- PROGRAMMER:      Calvin Rempel, Jeff Bayntun
--
-- INTERFACE:       void awaitFurtherInstructions()
--
--
-- NOTES:           child Process waits for instructions from message queue, then takes
                    action based on message type
-----------------------------------------------------------------------------------------------*/
void Networking::SendProcess::awaitFurtherInstructions()
{
    SendMessage message;
    size_t result;
    int length = sizeof(SendMessage);
    int parent_value;
    while (1)
    {
        // < -- READ FROM MESSAGE QUEUE HERE -- >

        memset(&message, 0, sizeof(SendMessage));


        if( (result = msgrcv(qid, &message, length, 0, 0)) == -1)
        {
            perror("error receiving message");
            break;
        }

        switch(message.type)
        {
            case ADD_SOCKET:
                // todo: get real socket in parent value
                parent_value = 99;
                //  parent_value  = ???
                sockets.insert({parent_value, message.socket});
                break;
            case REMOVE_SOCKET:
                sockets.erase(message.socket);
                break;
            case SEND_MESSAGE:
                //write message to network over properly mapped socket
                sendNetworkMessage(message.socket, message.data);
                break;
            case SHUTDOWN:
                closeSockets(false);
                return;
            default:
                break;
        }
    }
}