void CustomerServiceConnection::onReceive(const Archive::ByteStream & message)
{
	Archive::ReadIterator ri = message.begin();
    GameNetworkMessage m(ri);
    ri = message.begin();

    if (m.isType("GameClientMessage"))
    {
        //we're receiving a message to forward to the client.
        //it is prefixed with NetworkId and reliable.
        const GameClientMessage msg(ri);
		Archive::ReadIterator mri(msg.getByteStream());
		GameNetworkMessage gnm(mri);
		mri = msg.getByteStream().begin();

		const std::vector<NetworkId> & d = msg.getDistributionList();
		std::vector<NetworkId>::const_iterator i;
		for(i = d.begin(); i != d.end(); ++i)
		{

			Client* client = ConnectionServer::getClient((*i));
			DEBUG_REPORT_LOG(!client, ("Error, could not map %s to a client\n", (*i).getValueString().c_str()));
			if (client)
			{
				client->getClientConnection()->sendByteStream(msg.getByteStream(), msg.getReliable());
			}
		}
	}
}
Exemplo n.º 2
0
int main(int argc, char** argv) { // главная часть, обработка параметров входа и выполнение

    init();
    char* data_file1=argv[1];
    char* data_file2=argv[2];
    char* strl = argv[3];
    FILE* f=fopen(data_file,"r");
    FILE* f2=fopen(data_file2,"r");
    if(!f)
    {
        printf("Wrong file\n");
        return 1;
    }
    char tmp[51];
    char mnoj_name;
    int elem;
    int num_mnoj=0;
    
    while(fgets(tmp,51,f)!=NULL)
    {
        mnoj_name=tmp[0];
        elem=getElem(tmp);
        int ind=getInd(mnoj_name);
        if(ind!=-1)
        {
            bool is_new=true;
            int l;
            for(l=0;l<num_elems[ind];l++)
            {
                if(elems[ind][l]==elem)
                {
                    is_new=false;
                }
            }
            if(is_new)
            {
                num_elems[ind]++;
                elems[ind]=(int *) realloc(elems[ind],num_elems[ind]*sizeof(int));
                elems[ind][num_elems[ind]-1]=elem;
            }
        }
        else
        {
            num_mnoj++;
            mnoj=(char*) realloc(mnoj,num_mnoj*sizeof(char));
            mnoj[num_mnoj-1]=mnoj_name;
            
            elems=(int**) realloc(elems,num_mnoj*sizeof(int*));
            elems[num_mnoj-1]=(int*) calloc(1,sizeof(int));
            elems[num_mnoj-1][0]=elem;
            num_elems=(int*) realloc(num_elems,num_mnoj*sizeof(int));
            num_elems[num_mnoj-1]=1;
            
        }
        
    }
    
    puts("Data file is read");
    
    int j=1; // номер анализируемого элемента
    puts(sum_mem);
    
    while(strlen(sum_mem)!=1)
    {
        printf("%s-%d\n",sum_mem,j);
         if(ifChar(sum_mem[j-2]) && ifChar(sum_mem[j]) && isOper(sum_mem[j-1]))
        {  
            char newMn=gnm(); // выбирает неиспользованную букву.
            num_mnoj++;
            
            mnoj=(char*) realloc(mnoj,num_mnoj*sizeof(char));
            mnoj[num_mnoj-1]=newMn; // мы нашли множество и создаём для него место
            
            elems=(int**) realloc(elems,num_mnoj*sizeof(int*));
            elems[num_mnoj-1]=(int*) calloc(0,sizeof(int));
            num_elems=(int*) realloc(num_elems,num_mnoj*sizeof(int));
            num_elems[num_mnoj-1]=0;   
            if(sum_mem[j-1]=='*')
            {
                peresech(sum_mem[j-2],sum_mem[j],newMn);
                sum_mem[j-2]=newMn;
                movePointer(sum_mem,j+1,2);
            }
            else if(sum_mem[j-1]=='+')
            {
                sumg(sum_mem[j-2],sum_mem[j],newMn);
                sum_mem[j-2]=newMn;
                movePointer(sum_mem,j+1,2);
            }
            else if(sum_mem[j-1]=='-')
            {
                minus(sum_mem[j-2],sum_mem[j],newMn);
                sum_mem[j-2]=newMn;
                movePointer(sum_mem,j+1,2);
            }
            
            j=2;
        }
        
    }
    
    puts(sum_mem);
    int last_ind=getInd(sum_mem[0]);
    int l;
    for(l=0;l<num_elems[last_ind];l++)
    {
        printf("%d\n",elems[last_ind][l]);
    }
    
    return (EXIT_SUCCESS);
}