pipeline.addLast(new SimpleChannelInboundHandler<DefaultFileRegion>() {
@Override
protected void channelRead0(ChannelHandlerContext channelHandlerContext, DefaultFileRegion defaultFileRegion ) throws Exception {
System.out.println("GOD DAMN, I GOT A FILE");
}
});
DefaultFileRegionDecoder
, а без них работать ничего не будет extends SimpleChannelInboundHandler<String>
)public class SimpleServer {
public static void main(String[] args) throws Exception {
EventLoopGroup group = new NioEventLoopGroup();
try {
new ServerBootstrap().group(group)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel socketChannel) {
ChannelPipeline pipeline = socketChannel.pipeline();
pipeline.addLast(new ObjectEncoder());
pipeline.addLast(new ObjectDecoder(ClassResolvers.cacheDisabled(null)));
pipeline.addLast(new SimpleChannelInboundHandler<RandomAccessFile>() {
@Override
protected void channelRead0(ChannelHandlerContext channelHandlerContext, RandomAccessFile randomAccessFile) throws Exception {
System.out.println("GOD DAMN, I GOT IT");
}
});
}
})
.bind("localhost", 8080)
.sync()
.channel()
.closeFuture()
.syncUninterruptibly();
} finally {
group.shutdownGracefully();
}
}
}
public class Client {
public static void main(String[] args) throws Exception {
EventLoopGroup group = new NioEventLoopGroup();
try {
new Bootstrap().group(group)
.channel(NioSocketChannel.class)
.handler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel socketChannel) {
ChannelPipeline pipeline = socketChannel.pipeline();
pipeline.addLast(new ObjectEncoder());
pipeline.addLast(new ObjectDecoder(ClassResolvers.cacheDisabled(null)));
pipeline.addLast(new SimpleChannelInboundHandler<RandomAccessFile>() {
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
RandomAccessFile file = new RandomAccessFile("C:/Users/Панк/Desktop/screen.png", "r");
ctx.write(new DefaultFileRegion(file.getChannel(), 0, file.length()));
System.out.println("here active");
}
@Override
protected void channelRead0(ChannelHandlerContext channelHandlerContext, RandomAccessFile randomAccessFile) throws Exception {
System.out.println("client got message");
}
});
}
})
.connect("localhost", 8080)
.sync()
.channel()
.closeFuture()
.sync();
} finally {
group.shutdownGracefully();
}
}
}
if (objs[i].getType() == 0)
printCar(objs[i].position[0], objs[i].position[1]);
else printWalker(objs[i].position[0], objs[i].position[1]);
void deleteOld(list<File> *catalog, Date date) {
list <File> :: iterator it;
for (it = catalog.begin(); it != catalog.end(); it++) {
File tmp = *it;
cout << tmp.getName() << endl;
if (tmp.getDate().min(date)) {
catalog.erase(it);
it = catalog.begin();
}
}
}
1) проверить на бэке, что юзеру позволяется выполнить это действие исходя из его роли
2) проверить на фронте, что юзеру действие доступно. И если не доступно – то даже не показывать кнопку "изменить статус". А так как заранее роли и их действия предусмотрену быть не могут (ТЗ), то я не могу писать условно говоря
if (user.isAdmin){}