00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifdef HAVE_CONFIG_H
00018 # include <dtn-config.h>
00019 #endif
00020
00021 #include <oasys/util/StringBuffer.h>
00022 #include "APIEndpointIDOpt.h"
00023 #include "dtn_api.h"
00024
00025 namespace dtn {
00026
00027 APIEndpointIDOpt::APIEndpointIDOpt(const char* opt, dtn_endpoint_id_t* valp,
00028 const char* valdesc, const char* desc,
00029 bool* setp)
00030 : Opt(0, opt, valp, setp, true, valdesc, desc)
00031 {
00032 }
00033
00034 APIEndpointIDOpt::APIEndpointIDOpt(char shortopt, const char* longopt,
00035 dtn_endpoint_id_t* valp,
00036 const char* valdesc, const char* desc,
00037 bool* setp)
00038 : Opt(shortopt, longopt, valp, setp, true, valdesc, desc)
00039 {
00040 }
00041
00042 int
00043 APIEndpointIDOpt::set(const char* val, size_t len)
00044 {
00045 char buf[DTN_MAX_ENDPOINT_ID];
00046 if (len > (DTN_MAX_ENDPOINT_ID - 1)) {
00047 return -1;
00048 }
00049
00050 memcpy(buf, val, len);
00051 buf[len] = '\0';
00052
00053 int err = dtn_parse_eid_string(((dtn_endpoint_id_t*)valp_), buf);
00054 if (err != 0) {
00055 return -1;
00056 }
00057
00058 if (setp_)
00059 *setp_ = true;
00060
00061 return 0;
00062 }
00063
00064 void
00065 APIEndpointIDOpt::get(oasys::StringBuffer* buf)
00066 {
00067 buf->append(((dtn_endpoint_id_t*)valp_)->uri);
00068 }
00069
00070 }