void ReceiverManager2Logger::ReceiverRemoved(ReceiverManager2Receiver& aReceiver)
{
    Print("Removed ");
    Print(aReceiver.Room());
    Print("(");
    Print(aReceiver.Group());
    Print(")");
    Print("\n");
}
void ReceiverManager2Logger::ReceiverVolumeLimitChanged(ReceiverManager2Receiver& aReceiver)
{
	Print("Vol Limit Changed ");
	Print(aReceiver.Room());
	Print("(");
	Print(aReceiver.Group());
	Print("): ");
	Bws<Ascii::kMaxUintStringBytes> buffer;
	Ascii::AppendDec(buffer, aReceiver.VolumeLimit());
    Print(buffer);
    Print("\n");
}
void ReceiverManager2::ReceiverVolumeLimitChanged(ReceiverManager2Receiver& aReceiver)
{
	LOG(kTopology, "ReceiverManager2::ReceiverVolumeLimitChanged ");
    LOG(kTopology, aReceiver.Room());
    LOG(kTopology, ":");
    LOG(kTopology, aReceiver.Group());
    LOG(kTopology, "\n");

	ReceiverManager2Job* job = iFree.Read();
	job->Set(aReceiver, &IReceiverManager2Handler::ReceiverVolumeLimitChanged);
	iReady.Write(job);
}
void ReceiverManager2::ReceiverRemoved(ReceiverManager2Receiver& aReceiver)
{
    LOG(kTrace, "ReceiverManager2::ReceiverRemoved ");
    LOG(kTrace, aReceiver.Room());
    LOG(kTrace, ":");
    LOG(kTrace, aReceiver.Group());
    LOG(kTrace, "\n");

	ReceiverManager2Job* job = iFree.Read();
	job->Set(aReceiver, &IReceiverManager2Handler::ReceiverRemoved);
	iReady.Write(job);
}
void ReceiverManager2::ReceiverVolumeControlChanged(ReceiverManager2Receiver& aReceiver)
{
	LOG(kTopology, "ReceiverManager2::ReceiverVolumeControlChanged ");
    LOG(kTopology, aReceiver.Room());
    LOG(kTopology, ":");
    LOG(kTopology, aReceiver.Group());
	LOG(kTopology, ":");
    LOG(kTopology, aReceiver.HasVolumeControl() ? Brn("Yes") : Brn("No"));
    LOG(kTopology, "\n");

	ReceiverManager2Job* job = iFree.Read();
	job->Set(aReceiver, &IReceiverManager2Handler::ReceiverVolumeControlChanged);
	iReady.Write(job);
}
void ReceiverManager2Logger::ReceiverVolumeControlChanged(ReceiverManager2Receiver& aReceiver)
{
	Print("Vol Control Changed ");
	Print(aReceiver.Room());
	Print("(");
	Print(aReceiver.Group());
	Print("): ");
    aReceiver.HasVolumeControl() ? printf("Yes\n") : printf("No\n");
	if(aReceiver.HasVolumeControl())
	{
		Print("Vol      ");
		Bws<Ascii::kMaxUintStringBytes> bufferVol;
		Ascii::AppendDec(bufferVol, aReceiver.Volume());
		Print(bufferVol);
		Print("\n");
		Print("Mute      ");
		Bws<Ascii::kMaxUintStringBytes> bufferMute;
		Ascii::AppendDec(bufferMute, aReceiver.Mute());
		Print(bufferMute);
		Print("\n");
		Print("Vol Limit      ");
		Bws<Ascii::kMaxUintStringBytes> bufferVolLim;
		Ascii::AppendDec(bufferVolLim, aReceiver.VolumeLimit());
		Print(bufferVolLim);
		Print("\n");
	}
}
void ReceiverManager2Logger::ReceiverChanged(ReceiverManager2Receiver& aReceiver)
{
    Print("Changed ");
    Print(aReceiver.Room());
    Print("(");
    Print(aReceiver.Group());
    Print(")");
	if (aReceiver.Selected()) {
		Print(" Selected ");
	}
	else {
		Print(" Not Selected ");
	}
	Bws<10000> state;
	aReceiver.TransportState(state);
	Print(state);
    Print(" ");
	Bws<10000> uri;
	aReceiver.SenderUri(uri);
	Print(uri);
    Print("\n");
}
void ReceiverManager2::ReceiverVolumeLimitChanged(ReceiverManager1Receiver& aReceiver)
{
	ReceiverManager2Receiver* receiver = (ReceiverManager2Receiver*)(aReceiver.UserData());
	ASSERT(receiver);
	receiver->VolumeLimitChanged();
}
void ReceiverManager2::ReceiverMuteChanged(ReceiverManager1Receiver& aReceiver)
{
	ReceiverManager2Receiver* receiver = (ReceiverManager2Receiver*)(aReceiver.UserData());
	ASSERT(receiver);
	receiver->MuteChanged();
}
void ReceiverManager2::ReceiverRemoved(ReceiverManager1Receiver& aReceiver)
{
	ReceiverManager2Receiver* receiver = (ReceiverManager2Receiver*)(aReceiver.UserData());
	ASSERT(receiver);
	receiver->Removed();
}