void Pipe2Sock::OnShutdown() { if (listen_pipe.IsOpen()) listen_pipe.Close(); if (socket.IsOpen()) { if(dst_addr.IsMulticast()) { socket.LeaveGroup(dst_addr); } socket.Close(); } PLOG(PL_ERROR, "pipe2Sock: Done.\n"); } // end Pipe2Sock::OnShutdown()
bool Pipe2Sock::OnStartup(int argc, const char*const* argv) { if (argc == 1) { TRACE("No args! Are you sure you want to be running without any args?\n"); Usage(); } if (!ProcessCommands(argc, argv)) { PLOG(PL_ERROR, "pipe2Sock::OnStartup() error processing command line\n"); Usage(); return false; } //set the destination address/port info dst_addr.SetPort(dst_port); TRACE("Destination address set to %s/%d\n",dst_addr.GetHostString(),dst_port); //set the socket sending/binding port info if(!(socket.Bind(snd_port))){ PLOG(PL_ERROR,"pipe2Sock::OnStartup() error binding to port %d\n",snd_port); return false; } if(!(socket.Open(snd_port,ProtoAddress::IPv4,false))) { PLOG(PL_ERROR,"pipe2Sock::OnStartup() error opening the socket on port %d\n",snd_port); return false; } if(dst_addr.IsMulticast()) { if(!socket.JoinGroup(dst_addr)) { PLOG(PL_ERROR,"pipe2Sock::OnStartup() error joining multicast group %s\n",dst_addr.GetHostString()); socket.Close(); return false; } TRACE("Joined multicast group %s\n",dst_addr.GetHostString()); } TRACE("Sending port set to %d\n",snd_port); //open up a listening pipe if (!listen_pipe.Listen(listen_pipe_name)) { socket.Close(); PLOG(PL_ERROR, "Pipe2Sock::OnCommand() listen_pipe.Listen() error opening pipe with name %s\n",listen_pipe_name); return false; } TRACE("pipe2Sock: listen \"%s\" listening ...\n", listen_pipe_name); return true; } // end Pipe2Sock::OnStartup()