📄 connectionmanagerservice.java
字号:
package no.auc.one.portableplayer.lmr;
import java.util.Hashtable;
import no.auc.one.portableplayer.communication.upnphosting.UPnPAction;
import no.auc.one.portableplayer.communication.upnphosting.UPnPActionArgument;
import no.auc.one.portableplayer.communication.upnphosting.UPnPHostingServiceBase;
import no.auc.one.portableplayer.communication.upnphosting.UPnPStateVariable;
import org.apache.log4j.*;
public final class ConnectionManagerService extends UPnPHostingServiceBase {
private static Logger LOG = Logger.getLogger("LMR/CMS");
//required Actions
UPnPAction GetProtocolInfo;
UPnPAction GetCurrentConnectionIDs;
UPnPAction GetCurrentConnectionInfo;
private Hashtable actions;
private static String protocolInfo = "http-get:*:audio/mpeg:*";
public ConnectionManagerService(){
actions = new Hashtable(3);
GetProtocolInfo = new GetProtocolInfoAction();
actions.put(GetProtocolInfo.getName(), GetProtocolInfo);
GetCurrentConnectionIDs = new GetCurrentConnectionIDsAction();
actions.put(GetCurrentConnectionIDs.getName(), GetCurrentConnectionIDs);
GetCurrentConnectionInfo = new GetCurrentConnectionInfoAction();
actions.put(GetCurrentConnectionInfo.getName(), GetCurrentConnectionInfo);
}
public String serviceType(){
return "urn:schemas-upnp-org:service:ConnectionManager:1";
}
public String serviceId(){
return "urn:upnp-org:serviceId:ConnectionManager";
}
public UPnPAction[] actionList() {
return new UPnPAction[]{};
}
public UPnPStateVariable[] stateVariableList() {
return new UPnPStateVariable[]{
new UPnPStateVariable(
"SourceProtocolInfo",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING),
new UPnPStateVariable(
"SinkProtocolInfo",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING),
new UPnPStateVariable(
"CurrentConnectionIDs",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING),
new UPnPStateVariable(
"A_ARG_TYPE_ConnectionStatus",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false),
new UPnPStateVariable(
"A_ARG_TYPE_ConnectionManager",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false),
new UPnPStateVariable(
"A_ARG_TYPE_Direction",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false),
new UPnPStateVariable(
"A_ARG_TYPE_ProtocolInfo",
UPnPStateVariable.STATEVARIABLE_DATATYPE_STRING,
false),
new UPnPStateVariable(
"A_ARG_TYPE_ConnectionID",
UPnPStateVariable.STATEVARIABLE_DATATYPE_I4,
false),
new UPnPStateVariable(
"A_ARG_TYPE_AVTransportID",
UPnPStateVariable.STATEVARIABLE_DATATYPE_I4,
false),
new UPnPStateVariable(
"A_ARG_TYPE_RcsID",
UPnPStateVariable.STATEVARIABLE_DATATYPE_I4,
false)};
}
public Hashtable actionTable() {
return actions;
}
private class GetProtocolInfoAction extends UPnPAction {
public GetProtocolInfoAction () {
super(
"GetProtocolInfo",
new UPnPActionArgument[]{
new UPnPActionArgument(
"Source",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"SourceProtocolInfo"),
new UPnPActionArgument(
"Sink",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"SinkProtocolInfo")});
}
public void invoke(UPnPActionArgument[] args){
// StringBuffer sinkProtocolInfoIn = null;
// String[] protocols = Manager.getSupportedProtocols(null);
// for(int i = 0; i<protocols.length; i++){
// String[] contentTypes = Manager.getSupportedContentTypes(protocols[i]);
// for(int j=0; j<contentTypes.length; j++)
// sinkProtocolInfoIn.append(protocols[i] + ":*:" + contentTypes[j] + ":*");
// }
// SinkProtocolInfo_in = sinkProtocolInfoIn.toString();
// System.out.println(SinkProtocolInfo_in);
args[0].setValue("");
args[1].setValue(protocolInfo);
}
}
private class GetCurrentConnectionIDsAction extends UPnPAction {
public GetCurrentConnectionIDsAction() {
super(
"GetCurrentConnectionIDs",
new UPnPActionArgument[]{
new UPnPActionArgument(
"ConnectionIDs",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"CurrentConnectionIDs")
});
}
public void invoke(UPnPActionArgument[] args){
args[0].setValue("0");
}
}
private class GetCurrentConnectionInfoAction extends UPnPAction {
public GetCurrentConnectionInfoAction() {
super(
"GetCurrentConnectionInfo",
new UPnPActionArgument[]{
new UPnPActionArgument(
"ConnectionID",
UPnPActionArgument.ARGUMENT_DIRECTION_IN,
"A_ARG_TYPE_ConnectionID"),
new UPnPActionArgument(
"RcsID",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"A_ARG_TYPE_RcsID"),
new UPnPActionArgument(
"AVTransportID",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"A_ARG_TYPE_AVTransportID"),
new UPnPActionArgument(
"ProtocolInfo",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"A_ARG_TYPE_ProtocolInfo"),
new UPnPActionArgument(
"PeerConnectionManager",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"A_ARG_TYPE_ConnectionManager"),
new UPnPActionArgument(
"PeerConnectionID",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"A_ARG_TYPE_ConnectionID"),
new UPnPActionArgument(
"Direction",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"A_ARG_TYPE_Direction"),
new UPnPActionArgument(
"Status",
UPnPActionArgument.ARGUMENT_DIRECTION_OUT,
"A_ARG_TYPE_ConnectionStatus")});
}
public void invoke(UPnPActionArgument[] args){
Object o = args[0].getValue();
int connectionID= Integer.parseInt((String) o);
if(connectionID == 0) {
args[1].setValue(new Integer(0));
args[2].setValue(new Integer(0));
args[3].setValue(protocolInfo);
args[4].setValue("");
args[5].setValue("-1");
args[6].setValue("Output");
args[7].setValue("OK");
}
else{
System.out.println("LMR: CMS: GetCurrentConnectionInfo(): A_ARG_TYPE_ConnectionID must be 0!");
// throw some exception here...
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -